您可以随时对物体施加力(如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