実現したいこと
プレイヤーが動く床に乗った時動く床に合わせてプレイヤーも移動するようにしたい
発生している問題・分からないこと
プレイヤーが接触した時にOncollisionメソッド内でSetParentで移動床の子オブジェクトとしてプレイヤーをセットしたところまではいくのですが、移動床に合わせて移動せずそのまま落下してしまいます。
該当のソースコード
Unity
1public class MovingBlock : MonoBehaviour 2{ 3 4 public int speed; 5 private Vector3 startPos; 6 private Rigidbody2D rbody; 7 8 // Start is called before the first frame update 9 void Start() 10 { 11 startPos = transform.position; 12 rbody = GetComponent<Rigidbody2D>(); 13 } 14 15 // Update is called once per frame 16 void Update() 17 { 18 float posX = startPos.x + Mathf.PingPong(Time.time * speed, 5); 19 rbody.MovePosition(new Vector3(posX, startPos.y, startPos.z)); 20 } 21 22 private void OnCollisionEnter2D(Collision2D col) 23 { 24 if (col.gameObject.tag == "Player") 25 { 26 col.transform.SetParent(transform); 27 //検証用 28 GameObject player = GameObject.FindWithTag("Player"); 29 Debug.Log(player.transform.position); 30 } 31 } 32}
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
移動床のRigidbody2Dのbodytypeを変更してみましたが、いずれもうまくいかず。
どのサイトもSetParentを使った方法が記載されておりましたが解決には至りませんでした
補足
プレイヤーオブジェクトにはRigidbody2D<Dynamic>、BoxCollider2D
動く床オブジェクトにはRigidbody2D<Kinematic>、BoxCollider2Dを設定しております
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。