Bu "Breakeout tarzı" oyun var.
Merkezde bir topum var, topun etrafındaki bloklar ve blokların etrafındaki yastıklar. Oyun şöyle görünür:
Piksel başına çarpışmayı başardım ve topum aşağıdaki matematikle bloklarla temas ettiğinde " yansıtır ":
Ball.Direction = 2 * (Block.Direction - Ball.Direction) + 180;
Mavi çizginin top yönü olduğu ve siyah çizginin (taban çizgisi) blok yüzeyi olduğu yerde.
Yön radyan cinsinden ifade edilen bir açıdır (elbette dereceye dönüştürülebilir).
Top tarafından taşınan:
// Event.ENTER_FRAME
x += Math.sin(Direction) * Velocity;
y -= Math.cos(Direction) * Velocity;
Çok uzak çok iyi.
Benim sorun şimdi, pedleri (küçük renkli bloklar etrafında 3 koyu ve büyük bloklar) ile geliyor.
Dönerken yüzey açısı değişir.
Dahası, top da kenarlara çarpmalıdır, peki, vuruşun yönünü ve topun yeni hareket yönünü nasıl ölçebilirim?
ps : Gerekirse, kod ve oynanabilir bir swf sağlayabilir.
Düzenle
Tamam, açılarla ilgili sorun Vektörler ile çözüldü , ancak yine de yanlarda ve arkada çarpışmada sorunum var.
Bunun için başka bir soru açacağım ve buraya bağlayacağım.