動く床の上に乗った時のプレイヤーの左右移動の挙動について
動く床をtransform.positionで三角関数を使って左右移動させ、その床の上にプレイヤーが乗った時に親を動く床にするというコードを作りました。
しかし、床と一緒に動くのはいいのですが、床の速度ベクトルがプレイヤーにも影響を及ぼしているらしく、
床に乗っていないときと動きの速度が遅いし挙動がおかしくなってしまいます。
ーー>誤字があるっぽいので変更点
動く床に乗っていないときと比べて動きの速度が遅いし挙動がおかしくなってしまいます。
(動く床に乗っていない時(通常の地面の上で)の歩く速さを2とすると、
動く床に乗っているときの歩く速さが0.5になる)
C# 床のコード
1コード 2[SerializeField] 3 private float moveSpeedX = 1f; 4 [SerializeField] 5 private float moveDistanceX = 1f; 6 [SerializeField] 7 private float moveSpeedY = 0f; 8 [SerializeField] 9 private float moveDistanceY = 0f; 10 private Vector2 initialPos;//初期位置 11 Rigidbody2D rb2D; 12 void Start() 13 { 14 //rb2D = GetComponent<Rigidbody2D>(); 15 initialPos = transform.localPosition; 16 } 17 18 19 void Update() 20 { 21 MoveFloor(); 22 } 23 24 void MoveFloor() 25 { 26 transform.localPosition = initialPos + new Vector2( 27 Mathf.Sin(moveSpeedX * Time.time) * moveDistanceX, 28 Mathf.Sin(moveSpeedY * Time.time) * moveDistanceY 29 ); 30 //rb2D.velocity = new Vector2( 31 // Mathf.Sin(moveSpeedX * Time.time) * moveDistanceX, 32 // Mathf.Sin(moveSpeedY * Time.time) * moveDistanceY 33 //); 34 }
C#
1コード 2プレイヤー側の処理 3 4 public void Run() 5 { 6 //左キー: -1、右キー: 1 7 change.x = Input.GetAxisRaw("Horizontal"); 8 9 //左か右を入力したら 10 //y軸操作時は左右に動けなくする 11 if (change.x != 0) 12 { 13 //入力方向へ移動 14 rb2d.velocity = new Vector2(change.x * speed, rb2d.velocity.y); 15 } 16 else 17 { 18 rb2d.velocity = new Vector2(0, rb2d.velocity.y); 19 } 20 } 21 22 private void OnCollisionStay2D(Collision2D col) 23 { 24 if (col.gameObject.CompareTag("MoveBox")) 25 { 26 transform.parent = col.transform; 27 } 28 } 29 30 private void OnCollisionExit2D(Collision2D col) 31 { 32 if (col.gameObject.CompareTag("MoveBox")) 33 { 34 transform.parent = null; 35 } 36 }
プレイヤーの移動はvelocityで制御しています。
また、床の方をrigidbodyで動かした際はなぜかプレイヤーが床の子なのにもかかわらず一緒に移動しませんでしたので、rigidbodyでの床移動はしていません。
どの点を変えればよいか教えてください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/06 13:24
2020/08/06 13:24
2020/08/06 13:26
2020/08/06 13:27
2020/08/06 13:32
2020/08/06 13:44
2020/08/06 13:49 編集
2020/08/07 06:50
2020/08/07 06:53