これまでのところ、フラットなプラットフォームとキャラクターを使い始めました。複数の側面の衝突で簡単なプラットフォームのゲームの問題に取り組んだ
私は重力とジャンプ機能を実装しました。
ので、重力のコンセプトは、プレーヤーが彼以下のオブジェクトに衝突したまで下向きに低下し続け、次のように動作します。
これは私のヒーローの下にフラットなプラットフォームがあるときに機能しますが、屋根を実装したいときに機能します。 プレーヤの上と下に平らなプラットフォームがあります。
マイ重力機能は、ちょうど落下し続けます。私の地形はすべてpygame.Rectのリストにあります。
私の重力関数はすべての地形を反復し、落下し続ける場合にプレーヤーが床オブジェクトの上にあるかどうかをチェックします。私はそれが落下を続けている私の性格上のオブジェクトを持っているので、私は気づいた
問題があります。私はキャラクターの上のタイルを無視し、プレイヤーの下にあるタイルに集中して共謀をチェックする方法を考えていないようです。
私がこの共謀の問題を理解すると、私はジャンプして屋根との衝突をチェックし、左右に動くときにそれを理解できると確信しています。
ヘルプありがとうございます。
編集: 地形は私のオブジェクトタイルのリストです。 は今だけ。これは、プレイヤーがジャンプしたときに呼び出される関数である2つのオブジェクト
#this is not correct way initialize just displaying my 2 object's rect
terrain = [<rect(400, 355, 50, 49)>,<rect(500, 198, 50, 49)>]
def GRAVITY(self, terrain):
'''----------break is cutting of parsing the rest of the terrain.
----------Need to search through each terrain. Keep falling until collide with an object under the hero ONLY.
'''
for i in range(len(terrain)):
print i
#stop falling when colliding with object
if terrain[i].top > self.rect.bottom:
print 'above tile while falling'
self.y += JUMPRATE
break
#continue falling if not standing on the object. Also catch when walking of an object then fall.
elif terrain[i].top <= self.rect.bottom and not self.rect.colliderect(terrain[i]):
print 'whoops missed tile'
self.y +=JUMPRATE
break
else:
print 'on tile'
self.y = self.y
break
を持っている地形。
これは[良い質問](http://stackoverflow.com/faq#dontask)ではありません。いくつかのコードを投稿し、あなたが直面している正確な問題を教えてください - あなたのコードの仕組みがわからないので、どうすれば答えることができますか?ただし、ここで明白な注意点は、[改ざんしない](https://code.google.com/p/pybox2d/)[reinvent](https://code.google.com/p/pymunk/)[the ](http://pybox2d.blogspot.co.uk/)[wheel](http://pyode.sourceforge.net/)。 –
zyeek、私は今あなたのコードを2回フォーマットしました。あなたの質問にコードを貼り付けるとき、それが正しくフォーマットされていることを確認してください。つまり、すべての行の前に4つの_additional_スペースが必要です。また、ソースコードにタブとスペースを混ぜているようです。これは悪い考えです。参照:http://stackoverflow.com/questions/120926/why-does-python-pep-8-strongly-recommend-spaces-over-tabs-for-indentation – Wilduck
あのOK。タブを4つのスペースに設定しました。私がインデントを必要とするとき、管理しやすく、巨大な塊ではありません。 – zyeek