我正在尝试与键盘进行这种交互,以便使用一些精灵进行移动,我遇到了两种情况。 1)角色运动不是根据动画本身进行的(它只在一秒钟左右开始移动,而它已经被动画了)。我真正想要它做的是,没有因为这个问题我得到的“初始加速感” 2)我想不出一种方法可以让角色面对释放按键时应该面对的位置。我会在这里发布代码,但由于它需要图像才能正常工作而且不是那么小我在这个链接上提供了一个skecth,如果你想查看它:https://www.openprocessing.org/sketch/439572
LPSTR pst = &myString[0]; // get temporary LPSTR, not very safe
答案 0 :(得分:0)
移动问题是由操作系统在按键之间设置延迟引起的。通过转到文本编辑器并按住键来试试这个。你会注意到一个角色立即出现,然后是一个延迟,然后是角色重复,直到你释放出来。
在keyPressed()
函数调用之间也会发生这种延迟。而且,由于您在x
函数中移动了角色(通过修改keyPressed()
变量),因此您会看到移动延迟。
此问题的解决方案是检查按下了哪个键,而不是仅依赖于keyPressed()
功能。您可以使用keyCode
函数中的draw()
变量,也可以使用一组boolean
变量跟踪按下哪个键。
请注意,您实际上已经使用isLeft
和isRight
变量执行此操作。但是你只是在keyPressed()
函数中检查它们,由于我上面提到的问题,它会破坏它们的目的。
换句话说,将此块从keyPressed()
函数移到draw()
函数内部,而不是:
if (isLeft ){
x -= speed;
}
if(isRight){
x += speed;
}
至于知道角色不移动时要面对的方式,你可以使用另一个boolean
值来跟踪你面对的方向。
附注:您应该尝试正确缩进代码,因为现在它很难阅读。
无耻的自我推销:我在Processing available here中写了一篇关于用户输入的教程。