[Chip]Unity开发笔记--Input System实现移动

1.Input Actions配置

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打钩即可在脚本中将其作为代码调用。

2.代码编写

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.保存并运行即可

3.完整项目视频预览

[Unity练习作]类幽灵行者跑酷小游戏 (bilibili.com)

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值