public class Control_Player : MonoBehaviour { //前进速度 public float m_ForwardSpeeed = 7.0f; //动画组件 // private Animator m_Anim; //动画现在状态 //private AnimatorStateInfo m_CurrentBaseState; //动画状态参照 static int m_jumpState = Animator.StringToHash("Base Layer.jump"); static int m_slideState = Animator.StringToHash("Base Layer.slide"); //场景控制对象 Control_Scenes m_ControlScenes; //游戏结束 bool m_IsEnd = false; public int roadIndex; // Use this for initialization void Start() { roadIndex = 1; SetPos(); //m_Anim = GetComponent<Animator>(); m_ControlScenes = GameObject.Find("Control_Scenes").GetComponent<Control_Scenes>(); } // Update is called once per frame void Update() { MoveByDir(); }public float moveSpeed = 1; void MoveByDir() { float h = Input.GetAxis("Horizontal"); transform.position += new Vector3 (-m_ForwardSpeeed,0,h * moveSpeed) *Time.deltaTime ; //Change_PlayerZ(true); transform.position = new Vector3(transform.position.x, transform.position.y, Mathf.Clamp(transform.position.z, -16, -3.88f)); } void moveByRoad() { transform.position += Vector3.left * m_ForwardSpeeed * Time.deltaTime; if (Input.GetKeyDown(KeyCode.A)) { if (roadIndex > 1) { roadIndex -= 1; } } else if (Input.GetKeyDown(KeyCode.D)) { if (roadIndex < 3) { roadIndex += 1; } } SetPos(); } public void Change_PlayerZ(bool IsAD)
时间: 2023-06-16 10:04:51 浏览: 170
这是一个控制玩家移动的脚本,其中包括了通过方向键移动和通过道路移动两种方式。在通过方向键移动时,玩家会向前移动,同时可以通过左右箭头调整玩家的位置。在通过道路移动时,玩家会沿着道路向前移动,同时可以通过按下 A 或 D 键切换道路位置。函数 Change_PlayerZ(bool IsAD) 的具体实现需要看完整代码。
相关问题
using UnityEngine; public class Control_Camera : MonoBehaviour { //间隔距离 public float m_DistanceAway = 1.7f; //间隔高度 public float m_DistanceHeight = 1.3f; //平滑值 public float smooth = 2f; //目标点 private Vector3 m_TargetPosition; //参照点 Transform m_Follow; void Start() { m_Follow = GameObject.FindGameObjectWithTag ("Player").transform; } void LateUpdate() { m_TargetPosition = m_Follow.position + Vector3.up * m_DistanceHeight - m_Follow.forward * m_DistanceAway; transform.position = Vector3.Lerp(transform.position, m_TargetPosition, Time.deltaTime * smooth); } }using UnityEngine; public class Control_Player : MonoBehaviour { //前进速度 public float m_ForwardSpeeed = 7.0f; //动画组件 // private Animator m_Anim; //动画现在状态 //private AnimatorStateInfo m_CurrentBaseState; //动画状态参照 static int m_jumpState = Animator.StringToHash("Base Layer.jump"); static int m_slideState = Animator.StringToHash("Base Layer.slide"); //场景控制对象 Control_Scenes m_ControlScenes;
这是两个Unity脚本,第一个是控制相机的脚本,第二个是控制玩家的脚本。
Control_Camera脚本中有三个公共变量,分别控制相机与目标之间的间隔距离、间隔高度以及平滑值。在Start函数中,通过标签找到玩家对象,并将其transform赋值给m_Follow。在LateUpdate函数中,根据m_Follow的位置和上下高度、前后距离,计算相机的目标位置m_TargetPosition,并使用Lerp函数平滑地将相机移动到目标位置。
Control_Player脚本中有一个公共变量,控制玩家的前进速度。在脚本中还定义了两个静态变量,分别表示跳跃和滑行的动画状态。在场景中控制对象Control_Scenes被引用,但该脚本没有给出,无法确定其功能。
using UnityEngine; public class Control_Camera : MonoBehaviour { //间隔距离 public float m_DistanceAway = 1.7f; //间隔高度 public float m_DistanceHeight = 1.3f; //平滑值 public float smooth = 2f; //目标点 private Vector3 m_TargetPosition; //参照点 Transform m_Follow; void Start() { m_Follow = GameObject.FindGameObjectWithTag ("Player").transform; } void LateUpdate() { m_TargetPosition = m_Follow.position + Vector3.up * m_DistanceHeight - m_Follow.forward * m_DistanceAway; transform.position = Vector3.Lerp(transform.position, m_TargetPosition, Time.deltaTime * smooth); } }
这是一个用于控制摄像机跟随的脚本,使用的是Unity引擎。具体来说,该脚本实现了以下功能:
1. 控制摄像机与目标物体之间的距离和高度。
2. 计算目标点的位置,即目标物体的位置加上向上的向量乘以间隔高度再减去向前的向量乘以间隔距离。
3. 使用平滑值对摄像机位置进行插值,使其在移动时更加平滑。
该脚本的具体实现如下:
1. 定义了三个公共变量,分别为间隔距离、间隔高度和平滑值。
2. 定义了目标点和参照点的变量。
3. 在 Start() 函数中,通过标签找到了目标物体并将其赋值给参照点。
4. 在 LateUpdate() 函数中,计算目标点的位置,并使用 Lerp() 函数对摄像机位置进行平滑插值。
阅读全文