私はキャラクターコントローラと敵にRigidbody
を付けました。私は敵が私を囲むことができるようにして、移動できなければ私を閉じ込めるようにしたいので、私はそれに応じて大量のプロパティを設定します。Rigidbodiesと衝突してプレイヤーオブジェクトを空中に投げ込む
ちょっとした問題があります。私の質量を十分に高く設定しないと、敵が私と衝突する瞬間に、プレイヤーは空中に飛ぶことになります。私の敵の質量を十分に高く設定しなければ、私はそれらを右に歩くことができます。この問題を解決するにはどうすればよいですか?
using UnityEngine;
using System.Collections;
public class CharController : MonoBehaviour {
public float speed;
void Start() {
Cursor.lockState = CursorLockMode.Locked;
}
void Update() {
float translation = Input.GetAxis ("Vertical") * speed;
float strafe = Input.GetAxis ("Horizontal") * speed;
translation *= Time.deltaTime;
strafe *= Time.deltaTime;
transform.Translate (strafe, 0, translation);
if (Input.GetKeyDown ("escape")){
Cursor.lockState = CursorLockMode.None;
}
}
}
現在の移動コードが含まれている場合は、ここにユーザーにとって参考になるでしょう。なぜなら、これはソリューションの不可欠な部分だからです。 – Serlite
@Serliteキーボードの移動スクリプトを含めるように編集しました。このスクリプトは、カプセルコライダーに置かれます。敵には、それに取り付けられたnavmeshコンポーネントもあります。 –
直接変換するのではなく、 'AddForce()'のような物理メソッドを使うことを考えましたか?あなたがこれらの巨大な物理現象を過剰反応させている理由は、物理的な計算の間にプレイヤーをあなたの敵に移動させ、大きな反発力を作り出しているからです。物理シミュレートを使用して間接的にプレイヤーを移動すると、これらの問題は消滅します。 – Serlite