CharacterController.MoveTransform.TransformDirection(Vector3)
Vorbereitungen davor
Fügen Sie CharacterController zum Player hinzu
m_cam_ang ist Vector3, der zum Speichern von Kamerarotationsdaten verwendet wird
m_cam ist die Kamera
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 Direktkopieversion
Vorbereitungen vor dem Kopieren
a. Fügen Sie CharacterController zum Player hinzu
b. Fügen Sie dem Umgebungsobjekt einen Conllider hinzu
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));
}
}