Keep your place in this quest

Log in or sign up for free to subscribe, follow lesson progress, and access more learning content.

このレッスンでは、私たちの Player の基本的な移動ロジックを作成し始めます。

Cave Engine の Logic Bricks のみを使用して、視覚的なロジックを通じてシンプルなジャンプメカニズムを実装します。これは、eventsconditions、およびactions がどのように連携してゲームプレイの動作を制御するかを理解するのにも役立ちます。

この場合、ロジックは非常にシンプルです:

  1. プレイヤーがジャンプキーを押したか確認します。
  2. プレイヤーがジャンプできるか確認します。
  3. すべてが正しい場合、プレイヤーの Character Component からジャンプ機能を呼び出します。

これは良い初めての例です。なぜなら、ジャンプは非常に一般的なゲームプレイメカニズムですが、Logic Bricks を使用してゲームを作成する際に何度も使用する基本的な構造を紹介しているからです。

1. ジャンプの追加

プレイヤーの移動ロジックを作成するために、最初にゲームの Events を取得する必要があります。

Events オブジェクトは、キーボードのキー、マウスボタン、ゲーム中に発生するその他のイベントチェックなど、入力関連の情報にアクセスするためのものです。

Logic Bricks 編集エリアの中で、右クリックしてノード検索メニューを開きます。

ノードを迅速に見つけるために、虫眼鏡アイコンで示された検索フィールドを使用し、探しているノードの名前を入力します。

EntityScene、および Events ノードは非常に頻繁に使用されるため、検索ウィンドウの上部に既にハイライト表示されています。そのため、通常は手動で名前を検索する必要はありません。

Get Events を選択して、ロジックに Events ノードを追加します。

image.png

次に Pressed ノードを追加します。

このノードは、プレイヤーが特定のキーを押しているかどうかを確認するためのものです。

言い換えれば、これは私たちのロジックに「プレイヤーが今ジャンプしたい」ということを伝える条件になります。

image.png

ジャンプを実行するために使用するキーを選択します。

ほとんどのゲームでは、Space キーがジャンプに一般的に使用されるので、ここでもそれを使用します。

image.png

ジャンプキーを設定した後、プレイヤーが実際にこのキーを押しているかどうかを確認する必要があります。

そのために、If (Bool) ノードを使用します。

If (Bool) ノードは、True または False のいずれかの値を受け取ります。条件が真であれば、ロジックは True 出力を通して続きます。条件が偽であれば、False 出力を通して続きます。

この場合、条件は Space キーが押されているかどうかです。

image.png

今度は、Events ノードを追加したのと同じように、現在の Entity を取得する必要があります。

これは重要です。なぜなら、ジャンプアクションは Events オブジェクトに属しません。Events オブジェクトは、キーが押されたかどうかを教えてくれるだけです。実際のジャンプ動作はプレイヤー Entity に属し、具体的にはその Character Component に属します。

Entity ノードを通じて、プレイヤーに添付されたコンポーネントにアクセスできます。

image.png

Character Component からの Output から接続をドラッグし、Jump を検索します。

このノードは、条件が満たされたときにキャラクターのジャンプを実行する役割を担います。

したがって、この時点で基本的に次のように言っています:

「プレイヤーがジャンプキーを押したとき、プレイヤーの Character Component を取得し、その Jump 機能を呼び出す。」

image.png

これがジャンプロジックの主な流れです:

Entity → Character Component → Jump

この流れで、Entity からキャラクターコンポーネントにアクセスし、次にそのジャンプ機能を使用します。

image.png

次に、If (Bool) ノードの True 出力を Jump ノードの Flow 入力に接続します。

これは、Space キーが押されたときに条件が真となり、プレイヤーがジャンプを実行することを意味します。

キーが押されていない場合、条件は偽となり、何も起こりません。

image.png

ただし、このロジックが実行されるためには、Flow イベントに接続される必要があります。

Logic Bricks はランダムに実行されるわけではありません。実行フローを開始するノードが必要です。

On Start ノードは、Entity が開始したときに一度だけ実行されます。これは、変数を設定したり、参照を準備したり、ゲームの初めに何かを構成したりするために便利です。

On Update ノードは、毎フレーム実行されます。これは、移動、入力、カメラ制御、またはゲームが実行中に変化する可能性のあることなど、継続的にチェックする必要があるゲームプレイロジックに便利です。

プレイヤーがジャンプキーを押したかどうかを継続的に確認する必要があるため、ロジックを On Update に接続します。

これにより、ゲームプレイ中にジャンプキーのチェックが常に行われることが保証されます。

image.png

このロジックで、キャラクターは既にジャンプできるはずです。

Logic Bricksを整理するために、右クリックでクリック&ドラッグするか、Shift を押しながら個別に選択して、この機能を作成するために使用したすべてのノードを選択できます。

ノードを選択したら、C を押してコメントを作成します。

これは非常に便利な整理方法です。ロジックが成長するにつれて、コメントはジャンプ、移動、カメラ、攻撃、相互作用など、動作の異なる部分を視覚的に分けるのに役立ちます。

今はロジックがシンプルでも、早い段階からノードを整理することに慣れておくと、後でプロジェクトを理解しやすくなります。

image.png

image.png

2. 地面チェックの追加

この時点で、あなたは小さな問題に気づいたかもしれません:Space キーを押し続けると、キャラクターが繰り返しジャンプし続ける可能性があります。

これは、私たちのロジックがキャラクターがその時点で実際にジャンプできるかどうかを確認しないからです。キーが押された場合に、すぐにジャンプ機能が呼び出されます。

ほとんどのゲームでは、プレイヤーが空中で無限にジャンプできるようにしたくありません。通常、プレイヤーは地面に触れているときだけジャンプできるべきです。

幸いなことに、Cave でこれを解決するのは非常に簡単です。

そのために、On Ground ノードを使用します。

On Ground ノードは、キャラクターが現在地面に触れているかどうかを示すブール値を返します。

現在、私たちはただ一つの条件を確認する代わりに、二つの条件を確認します:

  1. ジャンプキーが押されているか?
  2. キャラクターが地面にいるか?

両方の条件が真のときのみ、Jump ノードを実行するべきです。

ロジックは次のようになります:

  • 最初に Space キーが押されているか確認します。
  • それが真であれば、プレイヤーが地面にいるか確認します。
  • プレイヤーが地面にいる場合、Jump を実行します。
  • プレイヤーが地面にいない場合、何もしません。

これにより、キャラクターが空中にいるときに無限にジャンプするのを防ぎます。

image.png

地面チェックを追加すると、基本的なプレイヤーコントローラーにとってジャンプロジックがずっと正しくなります。

今や、プレイヤーはジャンプキーが押され、Character Component がプレイヤーが現在地面にいると報告しているときにのみジャンプします。これは、Cave での多くのゲームプレイアクションに使用する基本的な構造です:最初に入力をチェックし、その後アクションが許可されているかチェックし、最後にアクションを実行します。