赞
踩
1.在Project中右键Create一个Input Actions,此处命名为PlayerControl,用于管理Player。
2.双击进入Input Actions,在Action Maps中右键Add Action Map命名为Player,该Action Map用于控制Player的所有行为。
3.在Action中右键Add Action命名为Move,更改右侧Action Properties内Action中的Action Type为Value,Control Type为Vector2,该设置用于获取键盘输入的值存储于二维向量(Vector2)中从而实现Player进行前后左右的移动。
4.右键Move,可以进行按键的绑定,在Input System中已经为我们设置好了,点击Add Up\Down\Left\Right Composite即可,将会获得一个2D Vector的Binding,展开后点击Up,在右侧的Binding Properties内Binding中的Path选择Listen按下“W”键即可将“W”键绑定在Up上,同理将A,S,D绑定在Left,Down,Right上,该操作用于将W,A,S,D作为Player移动的按键。
配置完后如图所示
6.保存后关闭该窗口,在Inspector中将Generate C# Class打钩即可在脚本中将其作为代码调用。
1.右键Create一个C# Script命名为Move,并挂载到Player的身上(将该脚本拖到创建好的Player物体身上,此处需自行创建Player)。
2.以下代码用于初始化PlayerControl。
- public class Move : MonoBehaviour
- {
- public PlayerControl playerControl;
- private void Awake()
- {
- playerControl = new PlayerControl();
- }
- private void OnEnable()
- {
- playerControl.Enable();
- }
- private void OnDisable()
- {
- playerControl.Disable();
- }
- }

3.我们选择使用Rigibody实现Player的移动,所以还需要为Player添加Rigibody组件,在开始时获取它。
- Rigidbody rb;
- private void Start()
- {
- rb=GetComponent<Rigidbody>();
- }
4.以下代码用于获取Player的移动方向并施加力。
- float speed=5f;
- //设置移动速度,可根据情况自行调整
- Vector2 inputVector;
- //用于装载PlayerControl获取的值
- Vector3 moveVector;
- //用于控制Player的移动方向
- private void FixedUpdate()
- {
- inputVector = playerControl.Player.Move.ReadValue<Vector2>();
- //通过WASD为inputVector赋值
- moveVector =transform.right * inputVector.x + transform.forward * inputVector.y;
- //Player的右边即inputVector.x的正方向,Player的前方为inputVector.y的正方向
- rb.AddForce(moveVector.normalized * speed, ForceMode.Force);
- //为Player身上的Rigibody组件施加力,第一个参数为施加力的方向,第二个参数为施加力的模式
- }
5.保存并运行即可
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。