Unity关于输入模块笔记

2 篇文章 0 订阅

在Unity游戏开发中,处理外部输入设备是一大模块。一个游戏有可能是键盘作为输入,也可能是手柄作为输入,有可能是VR、AR头盔,也有可能是其他设备输入。但是这些输入在游戏代码中,最终都要装换成有范围的数值来表示。记录一下将输入转换为(-1,1)的方法。
这里以键盘输入为例,控制角色的行走,我先获取指定键码的输入:

public string keyForward = "D";
public string keyBack = "A";
//声明一个float,作为转换后的值
public float run;

void OnUpdate(){
run= (Input.GetKey(keyForward) ? 1.0f : 0) - (Input.GetKey(keyBack) ? 1.0f : 0);
Debug.log(run);
}

这样,我们就把获得的键码值转换成数字-1和1,这样就可以判断run做出相应的逻辑。
但是我们发现,这样应用范围并不广,因为我们在控制角色的时候,要求有一个渐变的过程,比如控制奔跑动画,根据渐变来控制混合树的动画切换。我们在此基础上改进一下,使其效果和Unity的[Input.GetAxis()][6]方法差不多。

private string keyForward = "D";
private string keyBack = "A";

private float run;
private float targetRun;
private float runCache;

void OnUpdate(){
run= (Input.GetKey(keyForward) ? 1.0f : 0) - (Input.GetKey(keyBack) ? 1.0f : 0);
//实现(-1,1)的平滑过渡
targetRun = Mathf.SmoothDamp(targetRun , run, ref runCache, 0.5f);
Debug.log(targetRun );

当我们按下按键的时候,可以看到targetRun在-1到1之间平滑过渡;不按按键的时候,targetRun的值在(-1,1)之外变化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值