【问题标题】:Avoid impulse accumulation of an sprite when tapping在点击时避免精灵的冲动积累
【发布时间】:2014-03-22 00:33:49
【问题描述】:

我正在使用 SpriteKit 制作我的第一个 iOS 游戏,每次点击屏幕时我都会为我的精灵应用一个冲动,如下所示:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    _ball.physicsBody.velocity = CGVectorMake(0, 0);
    [_ball.physicsBody applyImpulse:CGVectorMake(0, 5)];
}

我试图避免在应用脉冲之前将精灵速度设置为零的脉冲累积,但它似乎不起作用。我也在考虑通过仅在速度为零时执行它来有条件地脉冲精灵,但它既不工作也不行。我做错了什么?。

【问题讨论】:

    标签: ios objective-c sprite-kit


    【解决方案1】:

    你可以试试:

     - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
     {
    
        CGVector vecVelocity = _ball.physicsBody.velocity;
    
        if(vecVelocity.dx == 0 && vecVelocity.sx == 0) {
    
            [_ball.physicsBody applyImpulse:CGVectorMake(0, 5)];
        }
    
    }
    

    【讨论】:

    • 是的,这就是答案。我目前正在使用加速度计,所以我只需要比较速度的dy 分量。非常感谢。
    猜你喜欢
    • 2013-03-24
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-29
    • 1970-01-01
    相关资源
    最近更新 更多