上に移動するプレーヤー、彼はジャンプしていますか、それとも登っていますか?


11

はしごを含む2D物理ベースのプラットフォーマーゲームで、上に移動するプレーヤーがジャンプによって発生したのか、はしごを登って発生したのかをどのように判断して、どのアニメーションを再生するかを知っていますか?

そして一般的に、明らかに方向ベクトルは再生するアニメーションを決定するのに十分ではありません。どのようにして動きの原因も決定するのですか(使用する正しいスプライトを知っているので)?


1
プレイヤーがはしごにいる場合、彼は本当に空中にいますか?
Derek

回答:


15

私はあなたがここで表現しているように見える、定期的に個人的な論理の問題を抱えています。それは時々あなたが完全に間違った方向からロジックとプログラミングを見ているということです。この場合、ロジックコードが原因で、最初からどちらが起こっているのかを最初から理解していることに気付いていないようです。プログラム的に言えば、彼がはしごに乗っているかどうかは既に知っているはずです。

それについて考えてください(私が言ったように、私はしばしばこの問題を抱えています)。ゲームのロジックは、あなたがはしごに乗っていることを知っているはずです。より良い説明のために、私はファイルアーカイブタイプを使用しており、データのサイズを取得する方法を理解しようとして1日の約1時間を無駄にしました。そのサイズを知っている:P。

これが非常に排他的に関連している理由は、あなたがそれを「私が空中にいるので、私がはしごにいるのかジャンプしているのかをどうやって見分けるのですか?」と見ているからです... 「これから空中に入るところですが、最初にどちらの方法でアニメーションを使用できるようにしますか」


簡単な例は:OnJump()あなたの変更jumpingtrueにブール値を、あなたは空中にいる、その後場合はjumpingfalseで、あなたはどちらか落ちるかなどをはしご、にしている
ジョシュア・ヘッジス

6

物理システムは、プレーヤーが特定の方向に動いている理由を知りも気にしません。物理システムがプレイヤーをそのように動かす原因となったのはあなたのゲームなので、それを追跡するのはゲームの責任です。プレーヤーエンティティには、ジャンプ、クライミング、ランニングなどの状態を示す状態が必要です。物理システムで何が起こったかに基づいてこれを理解しようとするべきではありません。


2

プレイヤーの垂直方向の速度を設定する衝突でトリガーされるイベントは、使用するアニメーションを指定するフラグを設定するためにも使用できるようです。

サードパーティ製のライブラリを使用していて、その情報から得られる情報が非常に制限されている場合は、はしごを四角形で囲み、プレーヤーが上に移動してその四角形に含まれている場合は、クライミングアニメーションを実行できます。


これは実際に私が後で自分のゲーム開発に取り組むつもりの良い点をもたらします。そしてそれが物理学に基づいてアニメーションの速度を変える方法です。私は、落ちる速さに基づいて、腕を手順に従って素早く飛ばしたいキャラクターがいます。そして、私はこれまで深く考える良い方法を考えたことはありませんでしたが(時間をかけて考えていました)、ベロシティのアイデアははるかに優れています。+1は、一般的な使用可能な回答であり、彼のケースのみに固有ではありません。
ジョシュア・ヘッジス

1

ジャンプ速度を設定するときは、キャラクターの状態もSTATE_JUMPINGに設定します。これを行うと、常にプレーヤーがどの状態にあるかがわかり、プレーヤーの状態を確認することでそれに応じて行動できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.