【问题标题】:Box2d:apply velocity in a directionBox2d:在一个方向上应用速度
【发布时间】:2010-08-01 13:39:23
【问题描述】:

我在 box2d iPhone 应用程序中的一个对象中应用了脉冲,现在想提高它在特定方向上的速度....我的意思是我需要两件事

1.在一个方向上穿过物体 2.提高速度

请帮忙..

【问题讨论】:

    标签: iphone objective-c cocos2d-iphone box2d


    【解决方案1】:
    b2Vec2 force = b2Vec2(xAcceleration, yAcceleration);
    force *= dt;  // Use this if your game engine uses an explicit time step
    b2Vec2 p = myObjectBody->GetWorldPoint(b2Vec2(0.0f, 0.0f));
    body->ApplyForce(force, p);
    

    通过修改xAccelerationyAcceleration,可以使物体以不同的速度向不同的方向运动。 (如果您计算角度,您可能需要使用force.Normalize();,然后乘以速度。)

    【讨论】:

    • 非常非常感谢......你能给我提供 box2d iPhone 最佳书籍的链接吗..??我想买一本..
    • 但我还有一个问题....我认为在上面的代码中 p 是力的方向....不是吗??那么如果我想将它指向 X 或 - X 或 Y -Y 轴然后怎么办??
    【解决方案2】:
    b2Vec2 vector = self.speed * b2Vec2(cos(angle), sin(angle));
    self.yourbodyBody->SetLinearVelocity(vector);
    [self schedule:@selector(increaseSpeed) interval:0.1];
    
    - (void)increaseSpeed
    {
        self.speed += 0.01;
        float angle = self.yourbodyBody->GetAngle();
        b2Vec2 vector = self.speed * b2Vec2(cos(angle), sin(angle));
        self.yourbodyBody->SetLinearVelocity(vector);
    }
    

    【讨论】:

    • 如果您添加一些解释,您可以改进这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多