1. 程式人生 > >unity3d 人物跳躍控制

unity3d 人物跳躍控制

要新增動畫狀態機

public class PlayerController : MonoBehaviour {

    Vector3 movement;
    Rigidbody playerRigidbody;
    Animator animator;

    // player移動速度
    public float speed = 6f;

    private float x;
    private float y;
    private float xSpeed = 2;
    private float ySpeed = 2;
    private Quaternion direct; // player direct
// 判斷是否落地 private bool grounded = true; void Awake() { playerRigidbody = GetComponent<Rigidbody>(); animator = GetComponent<Animator>(); } void Update() { // keyboard move float h = Input.GetAxisRaw("Horizontal"); // A D float
v = Input.GetAxisRaw("Vertical"); // W S // animating bool walking = h != 0f || v != 0f; animator.SetBool("Forward", walking); transform.Translate(Vector3.forward * v * speed * Time.deltaTime); // W S 上 下 transform.Translate(Vector3.right * h * speed * Time.deltaTime); // A D 左右
// Jump if (Input.GetButtonDown("Jump")) { if (grounded == true) { animator.SetBool("Jump", true); playerRigidbody.velocity += new Vector3(0, 5, 0); //新增加速度 playerRigidbody.AddForce(Vector3.up * 50); //給剛體一個向上的力,力的大小為Vector3.up*mJumpSpeed grounded = false; } } // mouse move x += Input.GetAxis("Mouse X") * xSpeed; y -= Input.GetAxis("Mouse Y") * ySpeed; direct = Quaternion.Euler(y, x, 0); transform.rotation = direct; } // 落地檢測 void OnCollisionEnter(Collision collision) { animator.SetBool("Jump", false); grounded = true; } }