題名の通り、 等速でのキャラの移動と即座の停止のコードがわかりません。ドラクエやFFなどの一般的なゲームの操作イメージで、キーを入力してるときは等速で進み、話すと即座に止まる操作を実現したいです。WASD操作によるものです。
最初はtransform.positionを使用していましたが、壁を貫通してしまうのでrigidbody2dを導入して物理的に動かすことにしました。AddForceが継続的に力を加えるものであることは理解しています。コードそのものを変えるものでも構いません、回答のほどよろしくお願いします。
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class NewMove : MonoBehaviour 6{ 7 public float speed = 10.0f; 8 public Rigidbody2D rb; 9 10 void Start() 11 { 12 rb = GetComponent<Rigidbody2D>(); 13 } 14 15 void FixedUpdate() 16 { 17 if(Input.GetKey(KeyCode.W)){ 18 rb.AddForce(transform.up * speed); 19 } 20 if(Input.GetKey(KeyCode.A)){ 21 rb.AddForce(-transform.right * speed); 22 } 23 if(Input.GetKey(KeyCode.S)){ 24 rb.AddForce(-transform.up * speed); 25 } 26 if(Input.GetKey(KeyCode.D)){ 27 rb.AddForce(transform.right * speed); 28 } 29 } 30}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/03/13 06:48