2017-04-17 985 views
0

因此,我有一个任务,我必须为学校在枪类型游戏中向敌人射击玩家时所做的任务。我已阅读Unity教程中的LookAt()函数,并将其用于我的知识。但它似乎没有工作。下面的代码是我到目前为止有:在Unity中使用LookAt()功能

public class EnemyControl : MonoBehaviour { 
private Rigidbody rb; 
public GameObject Bullet_Emitter2; 
public GameObject EnemyBullet; 
public float speedOfBullet; 
private int score; 
public Text countText; 
public Text winText; 
private GameObject Temporart_Bullet_Handler2; 
public Transform player; 
public Transform enemy; 

void Start() 
{ 
    rb = GetComponent<Rigidbody>(); 
    score = 0; 
} 

private void Update() 
{ 
    enemy.LookAt(player); 
} 
// Update is called once per frame 
void FixedUpdate() { 
    int fire = Random.Range(0, 100); 
    if(fire == 0 || fire == 1 || fire == 5) 
    { 
     Temporart_Bullet_Handler2 = Instantiate(EnemyBullet, Bullet_Emitter2.transform.position, Bullet_Emitter2.transform.rotation) as GameObject; 

     Temporart_Bullet_Handler2.transform.Rotate(Vector3.right * 90); 
     Rigidbody Temporary_Rigid_Body; 
     Temporary_Rigid_Body = Temporart_Bullet_Handler2.GetComponent<Rigidbody>(); 

     Temporary_Rigid_Body.AddForce(transform.up * speedOfBullet); 

     Destroy(Temporart_Bullet_Handler2, 20.0f); 
    } 
} 

}

的问题是我的敌人现在只是着眼于地上,而不是我,然后就拍摄下。有没有办法解决这个问题?我附上了玩游戏的玩家的图像?

enter image description here

之前投入的注视()函数我的太空人也只是在一条直线上固定和消防子弹,但我需要的AI跟踪玩家,而不是固定的。有没有使用LookAt()这样做的另一种方法或我使用此功能是否错误?

感谢您的帮助提前?

+1

你确定你的敌人的Z轴与你期望他们面对的方向一致吗?所有'LookAt()'都是指定对象在指定点的z轴。 – Serlite

回答

0

我会张贴此在评论,但我还不能,因为低信誉的


由于Serlite指出,LookAt()仅面向游戏对象的trasnform.forward(这是需要当对象未旋转时为(0,0,1))作为参数传递给目标。

为“修复”这只是一个空的游戏物体添加到您的Hirarchy并设置AI对象作为其子

Empty GameObject 
- AI GameObject (with your script) 

现在,您可以设置的方式为对象的全局旋转(旋转父) AI的前锋面对z +。