ฉันมีเกมนี้
ฉันมีปืนใหญ่ที่กึ่งกลางบล็อกรอบปืนใหญ่และแผ่นรองรอบบล็อก นี่คือลักษณะของเกม:
ฉันจัดการเพื่อให้ได้การชนกันของแต่ละพิกเซลและลูกบอลของฉัน " สะท้อน " เมื่อสัมผัสกับบล็อคด้วยคณิตศาสตร์ต่อไปนี้:
Ball.Direction = 2 * (Block.Direction - Ball.Direction) + 180;
โดยที่เส้นสีฟ้าคือทิศทางของลูกบอลและเส้นสีดำ (เส้นฐาน) คือพื้นผิวบล็อก
Directionเป็นมุมที่แสดงเป็นเรเดียน (ซึ่งสามารถแปลงเป็นองศาได้)
ลูกบอลถูกย้ายโดย:
// Event.ENTER_FRAME
x += Math.sin(Direction) * Velocity;
y -= Math.cos(Direction) * Velocity;
จนถึงตอนนี้ดีมาก
ปัญหาของฉันมาถึงตอนนี้โดยใช้แผ่นอิเล็กโทรนิกส์ (3 บล็อกที่มีขนาดใหญ่และมืดรอบ ๆ บล็อกสีขนาดเล็ก)
ในขณะที่พวกเขาหมุนมุมผิวจะเปลี่ยนไป
ยิ่งไปกว่านั้นลูกบอลควรตีที่ด้านข้างด้วยดังนั้นฉันจะวัดทิศทางของการตีและทิศทางการเคลื่อนที่ของลูกบอลได้อย่างไร
ป.ล. : ถ้าจำเป็นฉันสามารถจัดหารหัสและ swf ที่เล่นได้
แก้ไข
ตกลงปัญหาเกี่ยวกับมุมได้รับการแก้ไขด้วยเวกเตอร์แต่ฉันยังคงมีปัญหากับการชนด้านข้างและด้านหลัง
ฉันจะเปิดคำถามอื่นสำหรับสิ่งนั้นและเชื่อมโยงที่นี่