Tôi có trò chơi "Breakeout style" này.
Tôi có một khẩu pháo ở trung tâm, các khối xung quanh khẩu pháo và các miếng đệm xung quanh các khối. Đây là cách trò chơi trông như thế nào:
Tôi đã xoay sở để có được sự va chạm trên mỗi pixel và quả bóng của tôi " phản chiếu " khi tiếp xúc với các khối với phép toán sau:
Ball.Direction = 2 * (Block.Direction - Ball.Direction) + 180;
Trong đó đường màu xanh là hướng bóng và đường màu đen (đường cơ sở) là bề mặt khối.
Hướng là một góc được biểu thị bằng radian (tất nhiên có thể chuyển đổi thành độ).
Bóng được di chuyển bởi:
// Event.ENTER_FRAME
x += Math.sin(Direction) * Velocity;
y -= Math.cos(Direction) * Velocity;
Càng xa càng tốt.
Vấn đề của tôi bây giờ, với các miếng đệm (3 khối tối và lớn xung quanh các khối nhỏ màu).
Khi họ quay lại, góc bề mặt thay đổi.
Hơn thế nữa, quả bóng cũng nên đập vào hai bên, vì vậy, làm thế nào tôi có thể đo được hướng đánh và hướng di chuyển mới của quả bóng?
ps : Nếu cần, tôi có thể cung cấp mã và một swf có thể chơi được.
Biên tập
Ok, vấn đề với các góc đã được giải quyết với vectơ , nhưng tôi vẫn gặp vấn đề với va chạm hai bên và lưng.
Tôi sẽ mở một câu hỏi khác cho điều đó và liên kết nó ở đây.