我是靠谱客的博主 害羞白云,这篇文章主要介绍Unity 第三人称人物移动,现在分享给大家,希望可以做个参考。

1,创建一个简单的物体作为角色
在这里插入图片描述
2,为物体添加移动代码:本次使用的方式A、D键控制前后运动,W、S键控制转向

复制代码
1
2
3
transform.Translate(0, 0, speed * Input.GetAxis("Vertical"));//Translate可以控制物体移动 transform.Rotate(0, speed *20* Input.GetAxis("Horizontal"),0);//Rotate可以控制物体转向

3,物体需要跳跃:当按下空格键,AddForce可以给物体一个力,而Vector.up可以控制力的方向向上

复制代码
1
2
3
4
5
if(Input.GetKeyDown(KeyCode.Space)) { this.GetComponent<Rigidbody>().AddForce(Vector3.up * 6000); }

4,为了使得物体不摔倒,使用eulerAngles给物体一个角度判断`

复制代码
1
2
3
4
5
if ((this.transform.eulerAngles.x > 90 && this.transform.eulerAngles.x < 270) || (this.transform.eulerAngles.z > 90 && this.transform.eulerAngles.z < 270)) { transform.eulerAngles = new Vector3(0, 180, 0); }

5,给物体添加一个跟随相机,首先创建一个相机,然后把这个脚本赋给相机,player为玩家,通过玩家的位置,来为相机创建一个跟随位置。
第二行的lerp是一个插值运算方法,可以使得相机平滑的跟随着人物来运动。
为了使得相机在人物背后,可以使用LookAt来注视玩家。

复制代码
1
2
3
4
5
Vector3 camera_felow = player.position + Vector3.up * speed_one - first.forward * speed_two; transform.position = Vector3.Lerp(transform.position, camera_felow, Time.deltaTime * smooth); transform.LookAt(first.position);//lookat为注视物体的效果

最后附上完整的两个代码:
玩家:脚本直接添加在需要控制移动的角色身上

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using System.Collections; using System.Collections.Generic; using UnityEngine; public class three_run : MonoBehaviour { public float speed = 0.1f; //定义一个速度 void Update() { //控制物体的移动 transform.Translate(0, 0, speed * Input.GetAxis("Vertical")); transform.Rotate(0, speed *20* Input.GetAxis("Horizontal"),0); //实现跳跃的效果 if(Input.GetKeyDown(KeyCode.Space)) { this.GetComponent<Rigidbody>().AddForce(Vector3.up * 6000); } //防止物体倒下(如果是角色控制器可以直接面板调整) if ((this.transform.eulerAngles.x > 90 && this.transform.eulerAngles.x < 270) || (this.transform.eulerAngles.z > 90 && this.transform.eulerAngles.z < 270)) { transform.eulerAngles = new Vector3(0, 180, 0); } } }

相机:脚本添加到相机上面, 并将跟随的角色拖入

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System.Collections; using System.Collections.Generic; using UnityEngine; public class three_camera : MonoBehaviour { public Transform player; public float speed_one=10f; public float speed_two=10f; //使用speed_one,speed_two可以调整玩家和相机的距离 private float smooth = 1f; void LateUpdate() { Vector3 camera_felow = player.position + Vector3.up * speed_one - player.forward * speed_two; transform.position = Vector3.Lerp(transform.position, camera_felow, Time.deltaTime * smooth); transform.LookAt(player.position); } }

最后

以上就是害羞白云最近收集整理的关于Unity 第三人称人物移动的全部内容,更多相关Unity内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部