Unity3D - 控制角色移动

1.添加刚体

设置 Drag 和Angilar Drag为Infinity

2.代码控制
1.获取组件
2.获取水平轴和垂直轴的值
3.移动函数
4.控制动画播放

using UnityEngine;
using System.Collections;

public class PlayerMove : MonoBehaviour {

    public float speed = 5f; //速度
    Vector3 movePosition; //位置
    Rigidbody player; //角色
    Animator anim; //动画

    /// <summary>
    ///  脚本实例被创建时被调用
    /// </summary>
    void Awake () 
    {
        //获取组件
        player = GetComponent<Rigidbody>();
        anim = GetComponent<Animator>();
    }

    /// <summary>
    ///  每个固定物理时间间隔调用一次
    /// </summary>
    void FixedUpdate()
    {
        //获取水平轴和垂直轴的值
        float h = Input.GetAxisRaw("Horizontal");
        float v = Input.GetAxisRaw("Vertical");

        Move(h, v);//移动
        Animating(h, v);//移动动画
    }

    /// <summary>
    /// 移动
    /// </summary>
    /// <param name="h"></param>
    /// <param name="v"></param>
    void Move(float h, float v)
    {
        //设置三维向量的值
        movePosition.Set(h, 0f, v);//设置movement的位置
        movePosition = movePosition.normalized * speed * Time.deltaTime;//移动位置 - 目标位置
        player.MovePosition(transform.position + movePosition);//通过 MovePosition 方法让角色移动 transform.position:当前位置
    }

    /// <summary>
    ///  移动动画
    /// </summary>
    /// <param name="h"></param>
    /// <param name="v"></param>
    void Animating(float h, float v)
    {
        bool walking = h != 0 || v != 0;//是否处于行走状态
        anim.SetBool("IsWalking", walking);//设置 IsWalking 的值
    }
}

猜你喜欢

转载自blog.csdn.net/SGamble/article/details/52913157