2016-07-03 11 views
1

したがって、基本的にlead_xとlead_yは物の座標であり、MineXとMineYも同じです。Pygame Missile Coll

if lead_x > XMine and lead_x < XMine + MineThickness: 
    if lead_x + block_size > XMine and lead_x + block_size < XMine + MineThickness: 
     if lead_y > YMine and lead_y < YMine + MineThickness: 
      gameOver = True 

は基本的に私は事の熱線追尾ミサイルのようなものを作りたかったのです。上記のコードは衝突を処理することになっています。

しかし、衝突は本当に不思議です。時にはそれをキャッチし、ときどきキャッチしないことがあります。

ここで求めてミサイルのようなオブジェクトを作用させるために使用されている上記のコードの一部は、次のとおり

gameDisplay.blit(mine, (XMine, YMine)) 
if lead_x > XMine: 
     XMine += 5 
if lead_x < XMine: 
     XMine -= 5 
if lead_y > YMine: 
     YMine += 5 
if lead_y < YMine: 
     YMine -= 5 

(BLOCK_SIZEは、ミサイルのターゲットの大きさを表し、MineThicknessはミサイルスプライトのサイズです。また、これはパイゲームで作られたものです)。

また、私はシークコードが愚かだと知っていますが、私はあまりにも複雑になりたくありませんでした。あなたが何か提案があれば、私はそれらを組み込むことがうれしいでしょう:)

ありがとう!

答えて

0

Pygameには、手動でやろうとしていることを達成するための多くの機能があります。 Spritesを使用してゲームオブジェクトを作成する場合は、2つの長方形スプライトの衝突を処理するためにちょうどSprite.colliderectを使用できます。

if (lead_x < XMine + MineThickness && lead_x + block_size > XMine): 
    // x-axis constraints are met 

    if (lead_y < YMine + MineThickness && block_size + lead_y > YMine): 
     // y-axis constraints are met 

     gameOver = True 

この答えはあなたのスプライトの両方が正方形であることを前提としています。あなたはそれを手動で行いたい場合は

あなたはAxis-Aligned Bounding Boxメソッドを使用することができます。