Cocos2d x 如何检测碰撞力?
cocos2d-x中是否有任何方法可以检测碰撞力?我想根据碰撞力制作不同的音效,或者在某些情况下完全禁用音效Cocos2d x 如何检测碰撞力?,cocos2d-x,Cocos2d X,cocos2d-x中是否有任何方法可以检测碰撞力?我想根据碰撞力制作不同的音效,或者在某些情况下完全禁用音效 例如:当我对躺在地上的精灵执行scaleTo操作时,它开始每时每刻改变它的大小,因此它也每时每刻都会触地。每次点击应用程序都会播放音效。我只想在我的精灵从某个真实高度坠落时播放它。您是否在某个update()函数中检测到碰撞,不是吗?所以,您需要记住上一次update()调用的对象位置。大概是这样的: Vec2 previousPosition; void YourClass::upd
例如:当我对躺在地上的精灵执行scaleTo操作时,它开始每时每刻改变它的大小,因此它也每时每刻都会触地。每次点击应用程序都会播放音效。我只想在我的精灵从某个真实高度坠落时播放它。您是否在某个update()函数中检测到碰撞,不是吗?所以,您需要记住上一次update()调用的对象位置。大概是这样的:
Vec2 previousPosition;
void YourClass::update(float dt)
{
…
this->detectCollision();
this->updatePhysics();
this->makeSomethingElse();
…
}
void YourClass::detectCollision()
{
currentPosition = yourObject->getPosition();
float distance = currentPosition.getDistance(previousPosition)
if (obstacleRect.intersectsRect(yourObjectRect))
{
// collide handler
if (distance == 0)
// do nothing
if (distance > threshold)
// play some sound
}
…
previousPosition = currentPosition;
…
}
取决于当前和上一个对象位置之间的距离,您可以计算对象的速度并估计其力。在您的示例中,当对象通过ScaleTo碰撞时,其位置稳定,距离和速度=0。
如果移动物体和障碍物,速度的计算将更加复杂,必须根据进行。谢谢!但我相信这比你描述的更复杂。两个质量不同,速度矢量不同的物体呢。我如何计算它们碰撞时的力呢?当然,如果你有物理物体,最好计算冲量(速度或距离乘以质量),而不是距离。如果障碍物也移动了,你需要添加向量。但基本原则是一样的。