2015-07-20 98 views
0

我做一個簡單的遊戲之間,你知道,你用矩形移動在底部,你是在用球頂破壞矩形什麼是未來向上和向下,如果你錯過你失去了球......我不知道那場比賽的名字。唯一的問題是角度,我沒有任何想法如何計算角度,非常感謝你!pygame的角度球(矩形)和矩形

+0

遊戲的名稱可能是[Brickout](https://youtu.be/eB9XObmgmhk)。也許你可以擊敗沃茲,並在30分鐘內完成! :) – Pynchia

回答

0

你是說像Breakout

我認爲Pygame是一個很好的開始,查看他們examples,他們甚至已經有一些Breakout clones

如果您有球的運動矢量,您可以使用pygame.math.Vector2(即使提供rotate方法來計算球從球杆控制的杆反彈)來計算角度。

+0

究竟突圍:-))看起來不錯,我會檢查它out..but我仍然沒有一個想法應該如何外觀(代碼):PP – phos456

+1

我建議你下載[簡單突圍(HTTP: //www.pygame.org/project-Simple+Breakout-872-.html)並查看代碼。 – adrianus

+0

@ phos456檢查代碼是否有效?考慮選擇一個可接受的答案,如果它對你的問題有幫助。 – adrianus

1

你可以得到

angle_in_rads = Math.atan2(p1.y-p2.y,p1.x-p2.x) 

在任意兩點之間的弧度的角度來看這一公式應該工作在幾乎任何語言(我覺得蠻他們的很多都有ATAN2的等效)

如果你願意,你可以很容易地將它轉換爲度(你可能不希望它以度爲單位)

angle_in_deg = angle_in_rads*180/Math.PI 

的反彈你真的不需要計算任何角度你只是NE ed反轉反彈軸

if rect.p0.x < ball.x < rect.p1.x and ball.y > rect.p0.y: 
    ball.vy = ball.vy * -1 # bounce off paddle 

if ball.x + ball.vx > game.width or ball.x + ball.vx < 0: 
    ball.vx = ball.vx * -1 # bounce off the side walls 
+0

但是我不知道如何在我的代碼中使用它:P – phos456

+0

是什麼代碼?我沒有看到任何代碼...我看到一個關於確定角度 –

+0

也有什麼目的這個問題的段落?如果你真的試圖突破,我可能會推薦一個不同的框架,如Phaser.IO(它的JavaScript),但它會需要很少的代碼行來在phaser.io –