2017-01-08 8 views
0

ユニティ5.4を使用して、トップダウンの2Dゲーム。プレイヤーに続く敵のスプライトの回転

私はタンクの敵スプライトを4種類のスクリプトで持っています。 1つは移動して、もう1つは撃つ、もう1つはプレイヤーに従う、もう1つはHPを制御するダメージハンドラスクリプトです。問題は私のスプライトが斜めに動くか反対方向にプレーすることです。スクリーンショット)。私のスプライトはいつもプレーヤーに固定されています。

enter image description here

enter image description here

私は私のプレーヤーを次のために持っているスクリプトは、私はプレイヤーに向けた私のスプライトの動きに問題はコードの一部であると考えてい

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; 

私はラインの全体の意味をかなり理解しているとは思わない。または、あまりにも複雑すぎるかもしれません。

さらなる説明のために。私のタンクスプライトは私のプレイヤーに従わなければなりません(いつも、彼らが私に押しつぶされるまで)、砲塔は私に撃たれてから常にプレイヤーの方に向いていなければなりません。私の弾丸は正しい方向に向かって発射されますが、私のスプライトはプレイヤーに向かって正しく移動しますが、反対方向に向いています。

+0

あなたの質問は読まれていませんが、Mathf.Atan2(dir.y、dir.x)* Mathf.Rad2Degは角度がAoBに等しい角度を意味します。 A = x、0、B = x、y、o = 0,0 – Bijan

+0

あなたの問題は本当に明確ではありません。 –

+0

それはそれが起源ですか?それは私のプレーヤーに続くつもりのポイントはどこですか?私はdesiredRotのfloat角度を使用しています。 – Ryoukami

答えて

0

異なるスプライトは、前方位置が異なる場合があります。 public float rotationFix = 90f;を追加し、次に底面の近くに:float zAngle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg + rotationfix;それを使って有効な回転を微調整し、スプライトの前方を向いている位置を '修正'します。

調整は、ゲームプレイ中のインスペクタから簡単に行うことができます。

+0

私はあなたのコードに行った変更を微調整しましたが、スプライトは間違った方法で対処しています。回転を固定するための変数を追加しても何も変わりませんでした。私は次のスクリプトですべての行をほぼ微調整して以来、おそらく動きスクリプトに問題があると考え始めています。 これは移動スクリプトhttp://pastebin.com/GywaQT0U – Ryoukami

+0

ですので、ゲームプレイ中にインスペクタで浮動小数点数を変更すると何も起こりません。 – maksymiuk

+0

いいえ、そうではありません:/ – Ryoukami

関連する問題