营子区住房和城乡建设局网站,常州最新消息今天,深圳华强北招聘网,群晖 wordpress配置该脚本挂载到需要被移动、旋转控制的物体身上#xff0c;也可以之间挂在到摄像机上#xff01;
挂载到摄像机上可以实现第一人称视角控制#xff01;
挂载到物体身上#xff0c;配合摄像机跟踪脚本可以实现#xff0c;第三人称视角控制#xff01;
第一人称视角
将角…该脚本挂载到需要被移动、旋转控制的物体身上也可以之间挂在到摄像机上
挂载到摄像机上可以实现第一人称视角控制
挂载到物体身上配合摄像机跟踪脚本可以实现第三人称视角控制
第一人称视角
将角色控制脚本挂给摄像机即可 以下是角色控制脚本 using System.Collections; using System.Collections.Generic; using UnityEngine; public class CharacterControl : MonoBehaviour { public float MoveSpeed 50f; //用来提供移动旋转速度 public float RotateSpeed 30f; /// summary /// 这个变量是主角Y轴旋转的角度 /// /summary private float rotationY 0f; /// summary /// 这个变量是主角X轴旋转的角度 /// /summary private float rotationX 0f; void Start() { //从场景中分别拿到所需的游戏物体 } void LateUpdate() { ControlRole();//用来控制物体移动和旋转 } /// summary /// 控制主角物体移动旋转 /// /summary void ControlRole() { //控制脚本所在物体的移动; float X Input.GetAxis(Horizontal); float Z Input.GetAxis(Vertical); float Y Input.GetAxis(Jump); transform.Translate(new Vector3(X * MoveSpeed * Time.deltaTime, Y * MoveSpeed * Time.deltaTime, Z * MoveSpeed * Time.deltaTime), Space.Self); //这个函数是获取WASD参数XY得到-1-1然后赋值到三维向量作为移动函数的数值 //接下来控制物体的旋转 当用户通过鼠标移动时代码将根据用户的输入来旋转游戏对象。 float MouseXValue Input.GetAxis(Mouse X); rotationY MouseXValue * RotateSpeed * Time.deltaTime; //这段代码获取鼠标在水平方向上的移动值并乘以旋转速度和时间增量。 //然后将结果添加到 rotationY 变量中以控制游戏对象绕 Y 轴的旋转 float MouseYValue Input.GetAxis(Mouse Y); rotationX - MouseYValue * RotateSpeed * Time.deltaTime; //这段代码获取鼠标在垂直方向上的移动值并乘以旋转速度和时间增量。 //然后将结果减去 rotationX 变量中以控制游戏对象绕 X 轴的旋转。 transform.localRotation Quaternion.Euler(rotationX, rotationY, 0f); //这段代码使用 Euler 角度创建一个新的旋转四元数并将其应用于游戏对象的局部旋转。 //通过设置 rotationX 和 rotationY 的值可以控制游戏对象在 X 和 Y 轴上的旋转。 } /// summary /// 限制一下上下旋转的角度 /// /summary void LimitRotateX() { if (rotationX -360) { rotationX 360; } if (rotationX 360) { rotationX - 360; } //限制单次旋转的最大角度也就是不超过90度也可以设置一个外部变量便于用户控制 rotationX Mathf.Clamp(rotationX, -90f, 90f); } }//end class 第三人称
将上面 角色控制脚本挂给模型并添加一个摄像机追踪空物体便于摄像机有一个追踪目标然后把下面脚本挂给摄像机 附赠摄像机跟踪脚本如果你角色控制脚本给了摄像机那么这个脚本就不需要了 using System.Collections; using System.Collections.Generic; using UnityEngine; public class CameraFollow : MonoBehaviour { public Transform target; // 跟踪目标 public float smoothTime 0.3f; // 平滑时间 private Vector3 velocity Vector3.zero; void Update() { 计算新的位置 Vector3 targetPosition target.TransformPoint(new Vector3(0,1,-5));//本地坐标转世界坐标 平滑移动到新的位置 transform.position Vector3.SmoothDamp(transform.position, targetPosition, ref velocity, smoothTime); transform.LookAt(target); } }