1.player-input模块
把键盘传入的信号转化为信号
你可以在一个物体上面的新建一个c#脚本,然后定义不同的方向键,然后调用Input.GetKey()来接收信号
注意GetKey()是长按,而GetKeyDown()的按一下那一帧有判断。
写一个输入前后的代码吧
DirectionUp=0; DirectionRight=0; if(Input.GetKey(keyUp)){ DirectionUp+=1.0f; } if(Input.GetKey(keyDown)){ DirectionUp-=1.0f; } if(Input.GetKey(keyLeft)){ DirectionRight-=1.0f; } if(Input.GetKey(keyRight)){ DirectionRight+=1.0f; }
这里的问题主要是我太久没有接触编码了,不是很能理解为什么需要先设置方向的值为0然后再去加减呢
为的实际上就是左右,上下同时按的时候保证这个值是0哦,如果采用if else判断,最后同时按的时候,因为向前已经按了,所以else语句永远不会执行的
例如这样
if(Input.GetKey(keyUp)){ DirectionUp=1.0f; } else if(Input.GetKey(keyDown)){ DirectionUp=-1.0f; } else{ DirectionUp=0f; } if(Input.GetKey(keyRight)){ DirectionRight=1.0f; } else if(Input.GetKey(keyLeft)){ DirectionRight=-1.0f; } else{ DirectionRight=0f; }

2.做一个让移动更加平滑的damping吧
DirectionUp=Mathf.SmoothDamp(DirectionUp,TargetDirectionUp,ref VelocityDirectionUp,0.1f); DirectionRight=Mathf.SmoothDamp(DirectionRight,TargetDirectionRight,ref VelocityDirectionRight,0.1f);
Mathf.SmoothDamp()的用法就是(已有的值,目标值,一个ref值,需要达到目标值的时间)

posted on 2026-08-08 03:47  隳突gui  阅读(8)  评论(0)    收藏  举报