Unity3Dで迷路をデザインしています。迷路にはいくつかの分岐点があり、プレイヤーは各分岐点の前で停止し、単に左または右を選択します。次に、自動アニメーションにより、プレイヤーは迷路の終わりまで(または行き止まりまで)次の分岐点を移動します。
UnityプロジェクトでAniMateとC#を使用しているプレーヤーをアニメーション化するため。AniMateを使用して、分岐ごとにポイントツーポイントのアニメーションを作成しています(例:下のメイジ:開始/赤い矢印からポイント5まで)
私の問題は、物理学が尊重されていない(プレイヤーが壁を通り抜ける)ため、アニメーションスクリプト(「FirstPersonController」に関連付けられている)が正しく機能していないことです。同じプロジェクトでUnityの標準のキャラクターコントロールを有効にすると、壁などの物理的な制約を使って迷路の中を移動できます(つまり、コライダーがあります)。
これは、左を押して開始点、トラフポイント1からポイント2にパスするときに使用しているコードの例です。
void FixedUpdate () {
if (Input.GetKey(KeyCode.LeftArrow)) {
//To point 1
Hashtable props = new Hashtable();
props.Add("position", new Vector3(756f,112f,1124f));
props.Add("physics", true);
Ani.Mate.To(transform, 2, props);
//To point 2
Hashtable props2 = new Hashtable();
props2.Add("position", new Vector3(731f,112f,1124f));
props2.Add("physics", true);
Ani.Mate.To(transform, 2, props2);
}
}
左矢印ボタンを押すと実際に起こることは、プレイヤーが壁を通る直線を使用してポイント2に直接移動することです。AniMateに「Physics=true」を渡そうとしましたが、役に立たないようです。
この問題を解決する方法について何かアイデアはありますか?
または...より最適化されたコードを作成し、一連のvector3座標(各ポイントに1つ)を使用して、新しいHashtable()を宣言せずに必要な単純なアニメーションを取得する方法に関するヒント。など...毎回?私がAniMateを選んだ理由は、1。Unityの初心者です2.複雑なアニメーションは必要ありません(たとえば、iTweenを使用する必要はありません)。直線に沿ってアニメーションを修正するだけで、本当にシンプルで迅速なものが必要です。スクリプトで実装します。しかし、誰かが同じように単純な解決策を持っているなら、それは歓迎されます。
よろしくお願いします