Unity开发小技巧:人物行走动画表现方式

一:第三人称视角

1.左右键旋转,前后键前进后退

登录后复制

// Update is called once per frame    void Update () {        float ver = Input.GetAxis("Vertical");        transform.position += transform.forward * ver * Time.deltaTime * 5;        float hor = Input.GetAxis("Horizontal");        transform.Rotate(transform.up * hor * Time.deltaTime * 100);    }----------------------------------------------------------------------------- private void Update()    {        if (Input.GetKey(KeyCode.W) | Input.GetKey(KeyCode.UpArrow)) //前        {            this.transform.Translate(Vector3.forward * m_speed * Time.deltaTime);        }        if (Input.GetKey(KeyCode.S) | Input.GetKey(KeyCode.DownArrow)) //后        {            this.transform.Translate(Vector3.forward * -m_speed * Time.deltaTime);        }        if (Input.GetKey(KeyCode.A) | Input.GetKey(KeyCode.LeftArrow)) //左        {            this.transform.Translate(Vector3.right * -m_speed * Time.deltaTime);        }        if (Input.GetKey(KeyCode.D) | Input.GetKey(KeyCode.RightArrow)) //右        {            this.transform.Translate(Vector3.right * m_speed * Time.deltaTime);        }    }1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.

【Unity开发小技巧】Unity控制人物行走的几种表现方式_Unity控制移动



2.鼠标控制自动寻路

参考之前的记录 Unity的自动寻路NavMessAgent系统(一)_幻世界

【Unity开发小技巧】Unity控制人物行走的几种表现方式_自动寻路_02



二:第一人称视角

1.相机设置为玩家子节点

【Unity开发小技巧】Unity控制人物行走的几种表现方式_子节点_03

左右键旋转,前后键前进后退,相机设置为目标子节点固定相对位置效果如上图

鼠标控制相机旋转,效果如上图

登录后复制

// 控制玩家移动    void Update () {        float ver = Input.GetAxis("Vertical");        transform.position += transform.forward * ver * Time.deltaTime * 5;    }1.2.3.4.5.




登录后复制
控制相机视角 //鼠标左键控制上下转动        if (Input.GetMouseButton(0))        {            transform.Rotate(-Input.GetAxis("Mouse Y") * 2, 0, 0);        }        //鼠标右键控制左右转动        if (Input.GetMouseButton(1))        {            transform.Rotate(0, Input.GetAxis("Mouse X") * 2, 0);        }1.2.3.4.5.6.7.8.9.10.11.

2.鼠标自由视角 CharacterController

【Unity开发小技巧】Unity控制人物行走的几种表现方式_Unity控制移动_04

两个脚本,PlayerMovement控制身体的位移,PlayerCamera控制自己的相机的旋转

【Unity开发小技巧】Unity控制人物行走的几种表现方式_自动寻路_05

登录后复制

public class PlayerMovement : MonoBehaviour{    public CharacterController controller;    public float speed = 12f;    public float gravity = 10f;    public float jumpHeight = 2f;    public Transform groundCheck;    public float groundDistance = 0.4f;    public LayerMask groundMask;//地面layer    Vector3 velocity;    bool isGrounded;//是否落地    float x;    float z;    // Update is called once per frame    void Update()    {        x = Input.GetAxis("Horizontal");        z = Input.GetAxis("Vertical");                Vector3 move = transform.right * x + transform.forward * z;        controller.Move(move * speed * Time.deltaTime);        isGrounded = Physics.CheckSphere(groundCheck.position, groundDistance, groundMask);        if (isGrounded && velocity.y < 0)        {            velocity.y = -2f;        }        if (Input.GetButtonDown("Jump") && isGrounded)        {            velocity.y = Mathf.Sqrt(jumpHeight  * gravity);        }        velocity.y -= gravity * Time.deltaTime;        controller.Move(velocity * Time.deltaTime);    }}1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.


【Unity开发小技巧】Unity控制人物行走的几种表现方式_自动寻路_06

登录后复制

public class PlayerCamera : MonoBehaviour{    private float mouseSensitivity = 300;    private Transform playerBody;    // Start is called before the first frame update    void Awake()    {        Cursor.lockState = CursorLockMode.Locked;        playerBody = transform.parent;    }    // Update is called once per frame    void Update()    {        float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity * Time.deltaTime;        playerBody.Rotate(Vector3.up * mouseX);        float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity * Time.deltaTime;        transform.localEulerAngles -= new Vector3(mouseY, 0f, 0f);    }}1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空