C# 统一敌人精灵跟随我的玩家旋转

C# 统一敌人精灵跟随我的玩家旋转,c#,unity3d,sprite,unity5,C#,Unity3d,Sprite,Unity5,使用unity 5.4,自上而下的2D游戏 我的坦克敌人精灵有4个不同的脚本。一个移动并瞄准我的玩家,一个射击,另一个跟随玩家,最后一个伤害处理程序脚本控制生命。问题是当我玩游戏时,我的精灵斜向移动或朝着我的玩家的相反方向移动。(参见屏幕截图)。我的精灵一直固定在玩家身上 我跟随我的玩家的脚本是 using UnityEngine; using System.Collections; public class FollowPlayer : MonoBehaviour { public f

使用unity 5.4,自上而下的2D游戏

我的坦克敌人精灵有4个不同的脚本。一个移动并瞄准我的玩家,一个射击,另一个跟随玩家,最后一个伤害处理程序脚本控制生命。问题是当我玩游戏时,我的精灵斜向移动或朝着我的玩家的相反方向移动。(参见屏幕截图)。我的精灵一直固定在玩家身上

我跟随我的玩家的脚本是

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;
我相信我不太明白这句话的全部意思。或者可能太复杂了


请进一步澄清。我的坦克精灵必须跟随我的玩家(在任何时候,直到他们压垮我),炮塔必须一直朝向我的玩家,因为他们向我射击。我的子弹朝着正确的方向发射,但是我的精灵正确地朝着我的玩家移动,但是朝向另一个方向。

不同的精灵可能有不同的前进位置。添加一个
public float rotationFix=90f然后靠近底部:
float zange=Mathf.Atan2(dir.y,dir.x)*Mathf.Rad2Deg+rotationfix
并使用它调整有效旋转和“固定”精灵的前向位置


在游戏过程中,可以通过检查器轻松地进行调整。

我还没有读过你的问题,但是
Mathf.Atan2(dir.y,dir.x)*Mathf.Rad2Deg
表示以度数表示的角度等于AoB。当A=x,0和B=x,y和o=0,0你的问题不是很清楚,你想让敌人的坦克一直看着你吗?那就是问题的根源?意思是说这就是我的球员要去的地方?因为我正在使用那个浮动角度来制作desiredRot。是的,腾谷,我的敌人一直都盯着我的玩家。如果你想自己试试的话,我也可以给你敌人的移动脚本。我已经调整了你对我的代码所做的更改,但精灵们仍然面临着错误的方向。添加用于固定旋转的变量并没有改变什么。我开始相信可能有一个问题的运动脚本,因为我几乎调整了周围的每一行在我下面的脚本。这是移动脚本,因此在游戏过程中更改检查器中的浮动不会起任何作用?不,不会:/