键盘代码使角色直接向上跳跃,但在空中时不会左右移动

Posted

技术标签:

【中文标题】键盘代码使角色直接向上跳跃,但在空中时不会左右移动【英文标题】:Keyboard code makes character jump straight up, but not move left nor right when it's in the air 【发布时间】:2014-05-11 07:34:32 【问题描述】:
public function movementChar()
   
    if (upKey)
    
        this.y -= 10;
        this.gotoAndStop("jump");
        //this.scaleX = -1;     
    
    else
    if (leftKey)
    
        this.x -= xSpeed;
        this.gotoAndStop("run");
        this.scaleX = -1;
    
    else if (rightKey)
    
        this.x += xSpeed;
        this.gotoAndStop("run");
        this.scaleX = 1;
    
    else if(!leftKey || !rightKey)
    
        this.gotoAndStop("stop");
    

按住左键可以左移,按住右键可以右移, 但是当我按下时,角色会跳跃并且不会移动,但只有当我按住左键和上键||时才会向上移动右键和向上键。

如果有帮助,这里是其余的代码。

private function keyUp(e:KeyboardEvent):void 

    if (e.keyCode == 37)
    
        leftKey = false;
    
    if (e.keyCode == 39)
    
        rightKey = false;
       
    if (e.keyCode == 38)
    
        upKey = false;
           


private function keyDown(e:KeyboardEvent):void 

    if (e.keyCode == 37)
    
        leftKey = true;
    
    if (e.keyCode == 39)
    
        rightKey = true;
    
    if (e.keyCode == 38)
    
        upKey = true;
    

【问题讨论】:

【参考方案1】:

问题是你在 if/if else 条件下设置它,但它应该只是 if 条件。喜欢

if(leftKey)
...

if(rightKey)
..

if(upKey)
...

因为考虑一下,在您的代码中,您首先检查是否按下了 upKey,如果评估结果为 true,它将执行该部分并跳过所有其余部分,因为所有其他 if 条件只能在 upKey 为 false 时执行。

【讨论】:

很好的答案,谢谢!有用。但是有一个问题。动画继续播放,应该有一个空闲动画,所以如果玩家没有按下任何东西(如果所有键都是假的),那么角色应该进入“空闲”帧。 if (!upKey && !leftKey && !rightKey) this.gotoAndStop("stop"); 你可能已经知道了,但是如果你想要一个空闲动画,只需检查每个键是否为假,即 if (!upKey&& !leftKey&& !rightKey) then (play idle)

以上是关于键盘代码使角色直接向上跳跃,但在空中时不会左右移动的主要内容,如果未能解决你的问题,请参考以下文章

增加角色处于跳跃高峰的时间

键盘出现多次时,滚动视图不会向上移动

为啥我的左右移动动画不起作用?

当键盘覆盖输入字段但在它们之间留出一些空间时向上移动视图

在 iPad 上,如何防止模态视图在键盘呈现时向上移动?

unity中2d的角色控制