Cocos2D中的磁铁效应

时间:2014-07-07 18:24:58

标签: cocos2d-iphone spritebuilder

我正在努力创造一个遵循电磁场基本原理的游戏。这涉及在地图上放置根据目标对象的电荷吸引或排斥的对象。它是2D,我想知道cocos2d库中是否有任何磁体效应或其他任何东西。我现在能想到的唯一解决方案是计算每个对象在每个帧期间放置在目标对象上的矢量效果,但我觉得当地图上的磁铁数量增加时,它会变得非常聚集。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

想象一下,你有10个身体阵列和一个更大的身体作为磁铁。如果磁体被充电,阵列中的小物体会飞向更大的身体。不知道它如何与spritebuilder一起工作,但我认为 cocos2d + box2d 对您有用。你也可以让身体稍微切换一下。

NSMutableArray * magneticBodies;

b2Body * magnet;

if (charged == 1) {

    b2Vec2 pos1 = magnet->GetPosition(); 
    float speed = 0.5;   / / You can сhange speed from 0.1 to 1 for slowdown bodies;

 for (int i = 0; i < magneticBodies.count; i++) {

   b2Body *body = (b2Body*)[[magneticBodies objectAtIndex:i] pointerValue];

    b2Vec2 pos2 = body->GetPosition();

    b2Vec2 velocity = b2Vec2(pos1 - pos2);

    velocity.x = velocity.x*speed;
    velocity.y = velocity.y*speed;

    body->SetLinearVelocity(velocity);

    }
  }

PS:要获得实体之间的距离,请从此处获取代码get distance between two box2d