Unity简单的人物移动与摄像机组合(逐步完善)

characterController.Move与transform.TransformDirection(Vector3)

在这之前的准备工作

  1. 给player添加CharacterController

  1. m_cam_ang为Vector3,用来存储摄像机旋转数据

  1. m_cam是摄像机

  1. m_transform = this.transform

player.cs

//更新摄像机旋转角度
m_cam_ang.y += Input.GetAxis("Mouse X");
m_cam_ang.x -= Input.GetAxis("Mouse Y");
m_cam.eulerAngles = m_cam_ang;
//更新人物的旋转角度
Vector3 ang = Vector3.zero;
ang.y = m_cam.eulerAngles.y;
m_transform.eulerAngles = ang;
//人物移动
Vector3 motion = Vector3.zero;
motion.x = Input.GetAxis("Horizontal") * Time.deltaTime * 5;
motion.z = Input.GetAxis("Vertical") * Time.deltaTime * 5;
m_characterController.Move(m_transform.TransformDirection(motion));
player.cs直接复制版

复制前准备工作

a.给player添加CharacterController

b.给环境物体添加conllider

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UIElements;
public class player : MonoBehaviour
{
    [HideInInspector]
    public Transform m_transform;
    CharacterController m_characterController;
    Transform m_cam;
    Vector3 m_cam_ang = Vector3.zero;
    void Start() {
        m_transform = this.transform;
        m_characterController = GetComponent<CharacterController>();
        m_cam = Camera.main.transform;
    }
    void Update() {
        //更新摄像机旋转角度
        m_cam_ang.y += Input.GetAxis("Mouse X");
        m_cam_ang.x -= Input.GetAxis("Mouse Y");
        m_cam.eulerAngles = m_cam_ang;
        //更新人物的旋转角度
        Vector3 ang = Vector3.zero;
        ang.y = m_cam.eulerAngles.y;
        m_transform.eulerAngles = ang;
        //人物移动
        Vector3 motion = Vector3.zero;
        motion.x = Input.GetAxis("Horizontal")*Time.deltaTime*5;
        motion.z = Input.GetAxis("Vertical")*Time.deltaTime * 5;
        m_characterController.Move(m_transform.TransformDirection(motion));
    }
}

猜你喜欢

转载自blog.csdn.net/HeDanTou_/article/details/129326241