UE4 人物控制移动

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UE4 人物控制移动相关的知识,希望对你有一定的参考价值。

参考技术A 我们只做一个简单的前后移动
第一步我们需要给MyPawn加一个组件

第二步编写蓝图

在这个蓝图里我们需要注意两个结点

这个结点表明我们从该节点以后可以执行两个事件,但是该节点执行机制是单线程的,意思就是只有执行完Then0以后才会执行第二个

这个结点相当于一个闸口

控制左右旋转

而我们也有另外一种移动方式

此时我们也需要在MyPawn的

勾上此选项就可以了

下边是鼠标右键控制视野上下



这里的ControlerRotation我们其实就可以简单的理解,该Actor是否运动鼠标控制的偏移,就是鼠标上下左右移动是否会对其有影响
而我们经常遇到的SpringArm也有这几个选项

个人理解
UsePawnControlRotation是否使用鼠标的上下左右移动来对其控制
剩下的就是是否继承某个轴的转向
而Camera也有类似的设置

UsePawnControlRotation是否使用鼠标的上下左右移动来对其控制

关于用过控制人物移动的方法

在这里将收集更新有关,控制移动的方法。

1.通过WSAD控制人物的前后移动的方法(一)

 1 public class PlayerMovemeng:monoBehaviour
 2 {
 3 //人物的移动速度
 4 public float speed=6f;
 5 //坐标的移动变化量
 6 Vector3 movement;
 7 Rigidbody playerRigidbody;
 8 //与Ray发生碰撞的平面的Layer层数’
 9 int FloorMask;
10 float camRayLength=100f;
11 void Awake()
12 {
13 floorMask=LayerMask.GetMask("Floor");
14 PlayerRigidbody=GetComponent<Rigidbody>();
15 }
16 void FixedUpdate()
17 {
18 //ws前后的控制
19 float h=Input.GetAxisRaw("Horizontal"):
20 //ad左右的控制
21 float v=Input.GetAxisRaw("Vertical")
22 Move(h,v);
23 Turning();
24 }
25 //实现移动
26 void Move(float h,float v)
27 {
28 movement.Set(h,0,v);
29 movement=movement.normalized*speed*Time.deltaTime;
30 //使用刚体的MovePosition来实现人物移动
31 playerRigidbody.MovePosition(trandorm.position+movement);
32 }
33 //转向鼠标
34 void Turning()
35 {
36 Ray camRay=Cameta.main.ScreenPointToRay(Input.mousePosition);
37 RaycastHit floorHit;
38 if(Physics.Raycast(camRay,Out floorHit,camRayLength,floorMask));
39 {
40 //获取人物与鼠标点击处的向量
41 Vevtor3 playerToMouse=floorHit.point-transform.position;
//获取人物与鼠标之间的用于旋转的四元数
42 Quaternion newRotation=Quaternion.LookRotation(playerToMouse);
//实现人物的转向过度
43 playerRigidbody.MoveRotation(newRotation); 44 } 45 } 46 }

2.实现相机跟随人物的脚本(无旋转方向)

 1 public Transform target;
 2 //镜头滑动速度
 3 public float smoothing=5f;
 4 //相机与人物的距离
 5 Vector3 offset;
 6 void Start()
 7 {
 8 offset=transform.positiion-target.position;
 9 }
10 void FixedUpdate()
11 {
12    Vevtor3 targetCamPos=target.position+offset;
13 transform.position=Vector3.Lerp(transform.position,targetCamPos,smoothing*Time.datle);
14 }

 

以上是关于UE4 人物控制移动的主要内容,如果未能解决你的问题,请参考以下文章

ue4绝地求生的操作控制

UE4_简易AI_基础移动

UE4 C++实现人物攻击

3D人物移动控制实现方案

关于用过控制人物移动的方法

AdvancedLocomotionSystemV第二篇 C++ 实现镜头跟随人物缓慢移动