第一人称玩家移动 摄像机跟随

Posted ywmqq005

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第一人称玩家移动 摄像机跟随相关的知识,希望对你有一定的参考价值。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerPlay : MonoBehaviour
{
public float MoveSpeed;
private Vector3 dir;

//第一人称视角旋转
private Transform camTrans;
private Vector3 camAng;
public float camHeight; //可以在unity测试中调整摄像机高度


// Use this for initialization
void Start()
{
//第一人称视角旋转
//初始化相机的位置
camTrans = Camera.main.transform;
Vector3 startPos = transform.position;
startPos.y += camHeight;
startPos.z += 1.3f;
camTrans.position = startPos;
camTrans.rotation = transform.rotation;
camAng = camTrans.eulerAngles;
}
void Update()
{
PlayerMove();
Rotate();
}
//玩家的移动
private void PlayerMove()
{
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
dir = new Vector3(h, 0, v);
transform.Translate(dir * Time.deltaTime * MoveSpeed, Space.Self);
}
private void Rotate()
{
//相机随鼠标旋转
float y = Input.GetAxis("Mouse X");
float x = Input.GetAxis("Mouse Y");
camAng.x -= x;
camAng.y += y * 2.5f;
camTrans.eulerAngles = camAng;
//设置物体与相机的Y旋转方向一致
camTrans.position = new Vector3(this.transform.position.x, camTrans.position.y, this.transform.position.z);
float camy = camAng.y;
this.transform.eulerAngles = new Vector3(this.transform.eulerAngles.x, camy, this.transform.eulerAngles.z);
//更新摄像机位置
Vector3 startPos = transform.position;
startPos.y += camHeight;
camTrans.position = startPos;
}
}

以上是关于第一人称玩家移动 摄像机跟随的主要内容,如果未能解决你的问题,请参考以下文章

unity移动视角开始飞

怎样用鼠标控制摄像机的移动旋转

Unity游戏开发第三人称摄像机跟随

Unity 中简单的第三人称摄像机跟随

FPS第一人称射击游戏UE4.26(逐步讲解)

让玩家根据摄像机角度向前、向右、向左和向后移动