0

私は、最も単純な物理学 (重力で落下、左右に移動、および (おそらく) ジャンプ) を備えた最も単純なプラットフォーマーのプロトタイプを作成しようとしています。例えば:

void Move () {
   if (!isDying || !isDead || !isShooting || !isFalling)
   {
     float amountToMove = Time.deltaTime * Input.GetAxis("Horizontal") * playerSpeed;
     transform.Translate(Vector3.right * amountToMove);
   }
}

void ApplyGravity() {

   float amountToMove = Time.deltaTime * gravity;
   transform.Translate(Vector3.down * amountToMove);

}

問題は、物理学を使用せずに isKinematic を有効にして衝突させる方法がわからないことです。私が知っている唯一のことは、OnTriggerEnter 関数を使用することです。そのため、すべてのオブジェクトに isTrigger を追加して (Hero.cs) を記述しました。

 void OnTriggerEnter (Collider otherGameObjectCollider) {
   if (otherGameObjectCollider.gameObject.tag == "ground") {
     Debug.Log("ground/wall collision");
   }
}

地面を通り抜ける(歩く)のを防ぐためにヒーローを止める必要があることは知っていますが、本当に考えられません。

ばかげた質問で申し訳ありません。

4

1 に答える 1

0

isFallingヒーローの旗を使用して、ヒーローが転倒しているかどうかを判断できます。このようにしてみてください:

void ApplyGravity() {
   if (isFalling) {
     float amountToMove = Time.deltaTime * gravity;
     transform.Translate(Vector3.down * amountToMove);
   }
}

void OnTriggerEnter (Collider otherGameObjectCollider) {
   if (otherGameObjectCollider.gameObject.tag == "ground") {
     Debug.Log("ground/wall collision");
     isFalling = false;
   }
}

そして、あなたのヒーローがジャンプではなくプラットフォームを離れるとき、あなたはisFalling彼が落ち始めるようにtrueに設定する必要があります。

Unityオフィシャルデモ:3DPlatformerチュートリアルをご覧になりたいと思うかもしれません。プラットフォームゲームを構築するために必要なすべてのトリックと方法が含まれていると思います。幸運を。:)

于 2013-02-18T06:10:14.047 に答える