您可以隨時對物體施加力(如F = ma)以使其移動。
box2d中的重力一直在做這個事情,如果你已經定義了一個重力矢量,它就會使物體落下。
所以,你的粉絲並不一定是一個真正的「物體」,因爲它有一個身體。您可以隨時使用box2d中的方法將風扇的力施加到您希望風扇吹出的物體上。我有一個「EntityController」的代碼,用於施加推力,使其在某個方向(目標方向)上移動。這是它的代碼:
void ApplyThrust()
{
// Get the distance to the target.
Vec2 toTarget = GetTargetPos() - GetBody()->GetWorldCenter();
toTarget.Normalize();
Vec2 desiredVel = GetMaxSpeed()*toTarget;
Vec2 currentVel = GetBody()->GetLinearVelocity();
Vec2 thrust = desiredVel - currentVel;
GetBody()->ApplyForceToCenter(GetMaxLinearAcceleration()*thrust);
}
在這種情況下,身體正在向目標移動。但它可能很容易就是目標是風扇吹進來的方向,而現在「正在吹制的東西」的質量中心被推離風扇。我的所有物體都有最大速度(GetMaximumSpeed(...)),所以這個函數只會施加力,直到物體以最大速度移動,然後不再施加(這是一個自然的反饋循環) 。
歡迎您查看代碼庫here on git hub的其餘部分。這也是談到in this post。請注意,這是用cocos2d-x(C++)編寫的,但如果您將文件聲明爲.mm(允許使用C++代碼),則相同的C++代碼將在cocos2d中運行。或者只是使用沒有代碼的技術,因爲你認爲合適。
對您有幫助嗎?
您可以製作傳感器主體,但不會產生接觸事件,但沒有碰撞響應,允許您對任何接觸人體應用固定脈衝 – LearnCocos2D
您可以定義區域,並且當您的精靈體進入該區域時,您可以改變重力採取行動 - 風扇或磁鐵。 – Renaissance