OOP'ta bir 2D fizik motoru yazıyorum. Ve uzayda fiziksel nesneler için bir çeşit "onTouchStart" veya "onTouchEnd" olay sistemini nasıl oluşturabilirim diye merak ediyordum.Fizik Motoru için 'AÇIK' Yazma Etkinlikler
Ve evet ben Box2D ve diğerleri olduğunu biliyorum, ama oyunda çok temel çarpışma kontrolü yapacak olan bir şey yapmak istiyorum. Ayrıca bunu yeni bir şey öğrenmenin bir yolu olarak görüyorum.
Neyse, bu kod .... var
void phPhysics::step(float delta)
{
int objectCount = m_objects.size();
for (int i = 0; i < objectCount; ++i)
{
phPhysicsObject* obj = m_objects.at(i);
/* Update positon of the object. */
obj->update(delta);
if(!obj->isSleep())
checkForCollisions(obj);
}
}
void phPhysics::checkForCollisions(phPhysicsObject* object)
{
int objectCount = m_objects.size();
for (int i = 0; i < objectCount; ++i)
{
phPhysicsObject* obj = m_objects.at(i);
if(object == obj)
continue;
if(isColliding(object, obj))
obj->onTouchStart(object);
}
}
ben onTouchStart olay var, ama tabii bu sürekli "onTouchStart" konulu tetiklemek için gidiyor görebileceğiniz gibi. Buna sadece çarpışmada ve bir kez de temasta 'bir kez' tetikleme yapabilir miyim? Birbirlerine dokunan bir dizi nesne yapmayı düşündüm, ama bunun iyi olup olmadığını bilmiyorum.
Çarpışmalarınızı nasıl çözmeyi planlıyorsunuz? – Zouch
Basit AABB, çok fazla bir şey yok. Bir problem olduğunu görebildiğim tek şey, mermi tespit atmasıdır, ama yine de, giderken öğreniyorum. – ajm113
Çarpışma tespiti hakkında konuşmam, ama koleksiyon çözme. Nesnelerinizi birbirinden nasıl uzaklaştıracaksınız (artık çarpışmaya sahip olmayacaksınız)? Bunu soruyorum çünkü bunu sık sık nesnelerinize impuls uygulayarak yaparsınız (bunu çok kısa bir süre boyunca uygulanan bir kuvvet olarak veya süratli bir değişim olarak görebilirsiniz), ancak bunu yapıyor gibi görünmüyorsunuz. bir tür şeyler (ve bu "onTouchStart" şeyler) ele alabileceğiniz/değiştirecek şekilde değiştirebilir – Zouch