playerInput.currentActionMap.FindAction("Move").performed += OnMove; } private void OnDisable() { playerInput.currentActionMap.FindAction("Jump").performed -= OnJump; playerInput.currentActionMap.FindAction("Move").performed -= OnMove; } public void OnJump(InputAction.CallbackContext callback...
OnDeviceLost(PlayerInput input):设备丢失(如设备没电) OnDeviceRegained(PlayerInput input):设备注册(设备从丢失中恢复也会执行) OnControlsChanged(PlayerInput input):控制器切换,如键盘和手柄都接入,默认设备为键盘,这时候按下手柄,就会触发 给PlayerInput 其中OnMove和OnJump为InputActions资产中的Actions的名称 ...
5.1)Send Messages和Broadcast Messages方式: On{ActionName}()函数,例如我们的ActionName是Move,则函数为OnMove public void OnMove(InputValue value) { Debug.Log("OnMove : " + value.Get<Vector2>()); } 5.2)Invoke Unity Events方式: Inspector->Player Input->Events->UI->Move(CallbackContext)中,...
简单记录使用NewInputSystem 在处理角色45°角移动,在OnMove方法里添加1个判断 void OnMove(InputAction.CallbackContext context) { Vector2 move = context.ReadValue<Vector2>(); float x = move.x; float y = move.y; // 此处可以添加一个是否按下动作判断 context.performed(扩展抬起为context.canceled) ...
我们新建一个Action,叫做Move,注意选择右侧的属性,为Value Vector2;然后右键Move,选择Add 2D Vector Composite. 然后按照上一期的内容,我们一次绑定WASD,然后保存。 就有了我们新添加的Move事件了,我们添加一个能够获取到值得函数OnMove(InputAction.CallbackContext context)在PlayerController.cs中。
public event UnityAction<Vector2> onMove=delegate { }; //UnityAction实际是一个委托。也可用System.Action并引入命名空间; //注10:Inputaction(即我重命名的PlayerInputAction)的原理:输入动作是一个由输入信号所触发的事件 //过程为我按下键盘按键,就输入了一个信号 ...
EventManager.Instance.AddEvent(EventType.OnPlayerMove, this, data => { //注册一个移动的事件,这个事件由InputManager中的OnMove发送给 //场景中的PlayerInput绑定监听 var eventData = data as EventDataPlayerMove; moveInput= eventData.position; //传递移动时的XZ方向的位置 ...
快速实践 配置InputAction 右键点击工程(project)面板空白处,弹出菜单栏,选择Create项,进入二次菜单,选择底下的Input Actions。 将其命名为InputSystemAsset。双击打开。 创建一个新的Action Maps和Action,将action命名为Move
我们所有输入相关的内容,都在Player上的PlayerInputHandler上,打开这个脚本,我们来处理玩家的WASD输入。 先添加两个属性,是否启用Y轴翻转以及是否启用X轴翻转。 然后是m_Move用来记录输入。 然后我们创建一个函数OnMoveInput,用来记录玩家的输入。这里我们做了两件事,一个判断是否处于鼠标模式,然后停止移动;然后另一个...
public void OnMove(InputValue value) { m_Move = value.Get<Vector2>(); } public void OnLook(InputValue value) { m_Look = value.Get<Vector2>(); } public void OnFire() { SpawnProjectile(); } 新一代输入系统支持无限数量的设备以及混用,还会通知玩家关于设备的变更,从而在运...