第一人稱視角操作
此功能主要是借鑒YouTube上一個(gè)博主的教程,寫的蠻好我就搬運(yùn)過來讓大家也試試。
1、控制對(duì)象與鏡頭是子父級(jí)關(guān)系
2、控制器對(duì)象添加CharacterController,Rigidbody組件如下:
3、重頭戲:創(chuàng)建PlayerController腳本并比此腳本掛到控制器上
其原理是:左右旋轉(zhuǎn)是控制父物體的歐拉角的Y軸
transform.Rotate(0, Input.GetAxis("Mouse X") * sensetivity,0);
上下點(diǎn)頭是子物體相機(jī)的歐拉角Z軸
playerCamera.Rotate(-Input.GetAxis("Mouse Y") * sensetivity, 0, 0);
水平方向
moveDirection = new Vector3(Input.GetAxis("Horizontal")*moveSpeed, moveDirection.y, Input.GetAxis("Vertical")*moveSpeed);
moveDirection = transform.TransformDirection(moveDirection);
跳躍:文章來源:http://www.zghlxwxcb.cn/news/detail-859308.html
if (controller.isGrounded)
{
if (Input.GetButton("Jump"))
moveDirection.y = jumpForce;
else
moveDirection.y = 0;
}
移動(dòng)文章來源地址http://www.zghlxwxcb.cn/news/detail-859308.html
moveDirection.y -= gravity * Time.deltaTime;
controller.Move(moveDirection*Time.deltaTime);
4、源代碼奉上:
using UnityEngine;
public class PlayerController : MonoBehaviour
{
[SerializeField] private float moveSpeed = 6f;
[SerializeField] private float jumpForce = 10;
[SerializeField] private float gravity = 15f;
private Vector3 moveDirection;
[Header("Camera details")]
public float sensetivity = 1f;
private Transform playerCamera;
private CharacterController controller;
void Start()
{
controller = GetComponent<CharacterController>();
playerCamera = GetComponentInChildren<Camera>().transform;
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = false;
}
void Update()
{
transform.Rotate(0, Input.GetAxis("Mouse X") * sensetivity,0);
playerCamera.Rotate(-Input.GetAxis("Mouse Y") * sensetivity, 0, 0);
if (playerCamera.localRotation.eulerAngles.y != 0)
playerCamera.Rotate(Input.GetAxis("Mouse Y")*sensetivity,0,0);
moveDirection = new Vector3(Input.GetAxis("Horizontal")*moveSpeed, moveDirection.y, Input.GetAxis("Vertical")*moveSpeed);
moveDirection = transform.TransformDirection(moveDirection);
if (controller.isGrounded)
{
if (Input.GetButton("Jump"))
moveDirection.y = jumpForce;
else
moveDirection.y = 0;
}
moveDirection.y -= gravity * Time.deltaTime;
controller.Move(moveDirection*Time.deltaTime);
}
}
到了這里,關(guān)于Unity 第一人稱視角控制移動(dòng)、旋轉(zhuǎn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!