【问题标题】:Magnet effect in Cocos2DCocos2D 中的磁铁效果
【发布时间】:2014-07-07 18:24:58
【问题描述】:
我正在尝试创建一个遵循电磁场基本原理的游戏。这涉及在地图上放置对象,这些对象根据目标对象的电荷吸引或排斥。它是 2D 的,我想知道 cocos2d 库中是否有任何具有磁效应的东西或类似的东西。我现在能想到的唯一解决方案是计算每个对象在每一帧期间放置在目标对象上的矢量效果,但我觉得当地图上的磁铁数量增加时,它会变得非常聚集。有什么想法吗?
【问题讨论】:
标签:
cocos2d-iphone
spritebuilder
【解决方案1】:
假设您有 10 个物体的阵列和一个更大的物体作为磁铁。如果磁铁体带电,则阵列中的小物体会飞向更大的物体。不知道它如何与 spritebuilder 一起使用,但我认为 cocos2d+box2d 会为您工作。你也可以让身体稍微切换一下。
NSMutableArray *magneticBodies;
b2Body *磁铁;
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