Vector 在花栗鼠身上,通过对物体施加正交力,使物体围绕其中心旋转

Vector 在花栗鼠身上,通过对物体施加正交力,使物体围绕其中心旋转,vector,chipmunk,Vector,Chipmunk,我试图通过施加一个正交的(身体方向的)力,并产生所需的扭矩,使物体围绕自己的中心旋转。但是,这也会移动身体(自然),我只需要它旋转。这是我的密码。请注意,我不想手动设置角度/方向,而是尝试使用此旋转力来实现 cpFloat dot = cpvdot(turningN, cpvnormalize_safe(cpBodyGetRot(body))); cpFloat cross = cpvcross(turningN, cpvnormalize_safe(cpBodyGetRot(body)));

我试图通过施加一个正交的(身体方向的)力,并产生所需的扭矩,使物体围绕自己的中心旋转。但是,这也会移动身体(自然),我只需要它旋转。这是我的密码。请注意,我不想手动设置角度/方向,而是尝试使用此旋转力来实现

cpFloat dot = cpvdot(turningN, cpvnormalize_safe(cpBodyGetRot(body)));
cpFloat cross = cpvcross(turningN, cpvnormalize_safe(cpBodyGetRot(body)));


cpVect rotN;
if (cross<=0) {
    rotN = cpvperp(cpvnormalize_safe(cpBodyGetRot(body)));
}else{
    rotN = cpvrperp(cpvnormalize_safe(cpBodyGetRot(body)));
}

cpVect rotF = cpvmult(rotN, 300*(1-dot));
cpBodyApplyForce(body, rotF, cpv(75,14));
cpFloat dot=cpvdot(旋转,cpvnormalize_-safe(cpBodyGetRot(body));
cpFloat cross=cpvcross(旋转,CPV标准化安全(cpBodyGetRot(车身));
cpVect-rotN;

如果(cross我不知道花栗鼠,但我知道一点物理知识-在物体的中心以相反的方向施加第二个力,并适当地调整其大小以抵消不希望的运动


这就像有一个轮子连接在一个固定的轴上——当你对轮子边缘施加一个力时,它会旋转而不向前移动,因为轮轴会向相反的方向施加一个反作用力。

哎哟,这很容易让人尴尬。我跳过了物理课……它起作用了。谢谢。你只需要有一个相等的力就行了在大小和方向上,但指向对象的中间,意义相反。将在几秒钟内为后代更新代码。