ユニティ5.4を使用して、トップダウンの2Dゲーム。プレイヤーに続く敵のスプライトの回転
私はタンクの敵スプライトを4種類のスクリプトで持っています。 1つは移動して、もう1つは撃つ、もう1つはプレイヤーに従う、もう1つはHPを制御するダメージハンドラスクリプトです。問題は私のスプライトが斜めに動くか反対方向にプレーすることです。スクリーンショット)。私のスプライトはいつもプレーヤーに固定されています。
私は私のプレーヤーを次のために持っているスクリプトは、私はプレイヤーに向けた私のスプライトの動きに問題はコードの一部であると考えてい
using UnityEngine;
using System.Collections;
public class FollowPlayer : MonoBehaviour {
public float rotSpeed = 90f;
Transform player;
void Update() {
if(player == null)
{
GameObject go = GameObject.Find("Player");
if(go != null)
{
player = go.transform;
}
}
if (player == null)
return;
Vector3 dir = player.position - transform.position;
dir.Normalize();
float zAngle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg;
Quaternion desiredRot= Quaternion.Euler(zAngle, 0, 0);
transform.rotation = Quaternion.RotateTowards(transform.rotation, desiredRot, rotSpeed * Time.deltaTime);
}}
です
float zAngle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg;
私はラインの全体の意味をかなり理解しているとは思わない。または、あまりにも複雑すぎるかもしれません。
さらなる説明のために。私のタンクスプライトは私のプレイヤーに従わなければなりません(いつも、彼らが私に押しつぶされるまで)、砲塔は私に撃たれてから常にプレイヤーの方に向いていなければなりません。私の弾丸は正しい方向に向かって発射されますが、私のスプライトはプレイヤーに向かって正しく移動しますが、反対方向に向いています。
あなたの質問は読まれていませんが、Mathf.Atan2(dir.y、dir.x)* Mathf.Rad2Degは角度がAoBに等しい角度を意味します。 A = x、0、B = x、y、o = 0,0 – Bijan
あなたの問題は本当に明確ではありません。 –
それはそれが起源ですか?それは私のプレーヤーに続くつもりのポイントはどこですか?私はdesiredRotのfloat角度を使用しています。 – Ryoukami