2017-04-17 47 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 +。