使用unity 5.4,自上而下2D游戏。
我的坦克敌人精灵有4种不同的剧本。一个是移动并瞄准我的玩家,一个是射击,另一个跟随玩家并且持续一个控制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;
我不相信我理解这条线的全部含义。或者它太复杂了。
进一步澄清。我的坦克精灵必须跟随我的玩家(在任何时候,直到他们来到我身上),炮塔必须一直面向我的玩家,因为他们向我射击。我的子弹朝着正确的方向射击,但是我的精灵朝着我的玩家正确移动,但面向另一个方向。
答案 0 :(得分:0)
不同的精灵可能有不同的前锋位置。添加public float rotationFix = 90f;
然后靠近底部:float zAngle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg + rotationfix;
并使用它来调整有效旋转并“修复”精灵的前向位置。
在游戏过程中,可以通过检查员轻松完成调整。