代码之家  ›  专栏  ›  技术社区  ›  lacas

如何旋转一个物体?

  •  4
  • lacas  · 技术社区  · 15 年前

    如何旋转物体 Box2D ? 尝试。。

    private static final double DEGREES_TO_RADIANS = (double)(Math.PI/180);
    float angle = (float) (45*DEGREES_TO_RADIANS);
    object.body.setTransform(object.body.getPosition(), angle);
    

    5 回复  |  直到 15 年前
        1
  •  2
  •   Andrew Thompson    15 年前

    动态 为了能够旋转, 另外使用 SetAngularVelocity() 实现旋转。

        2
  •  2
  •   Ali Raza    12 年前

    如果要将对象旋转到某个角度,则可以使用setTransform方法,如

    b2body->SetTransform( playerBody_->GetPosition(), angleInRadian );

    b2body->SetAngularVelocity(<float32>)

    记住,物体必须是动态的或运动学的才能旋转。

        3
  •  1
  •   Matrix Bai    15 年前

    private static final double DEGREES_TO_RADIANS = (double)(Math.PI/180);
    float angle = (float) (45*DEGREES_TO_RADIANS);
    object.body.setTransform(object.body.getWorldCenter(), angle);
    
        4
  •  1
  •   Thiem Nguyen    14 年前

    我认为你可以使用武力或脉冲,而不是直接使用setTransform方法。

    body->ApplyForce( b2Vec2(force,0), body->GetWorldPoint( b2Vec2(1,1) ) );
    

        5
  •  -1
  •   LionH    9 年前

    想法是旋转一个角度,我自己找到的最简单的方法是:

    float rotation = MathUtils.PI; // target rotation
    
    float c = 1; //speed of rotation
    float q = rotation-groundBody.getAngle();
    groundBody.setAngularVelocity(c*q);
    

    身体在开始时会旋转得更快,在结束时会旋转得更慢,但你可以使用插值函数来达到所需的旋转速度。