所以我有一项任务,我必须为学校做一项任务,敌人在枪式游戏中射击玩家。我已经阅读了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);
}
}
}
问题是我的敌人现在只是看着地面而不是我然后向下射击。有没有办法解决这个问题?我已经附上了玩游戏的玩家的形象吗?
在放入LookAt()函数之前,我的太空人只是静止不动并且直线发射子弹但是我需要AI来跟踪玩家而不是静止。有没有其他方法可以在不使用LookAt()的情况下执行此操作,或者我使用此函数是否错误?
先谢谢你的帮助?
答案 0 :(得分:0)
我会在评论中发帖,但由于声誉不佳,我还不能
正如Serlite指出的那样,LookAt()
只面向GameObject的trasnform.forward(当对象未旋转时希望为(0,0,1))朝向作为参数传递的目标
要修复&#39;这只是将一个空的GameObject添加到你的Hirarchy并将你的AI对象设置为它的孩子
Empty GameObject
- AI GameObject (with your script)
现在,您可以设置对象的全局旋转(旋转父对象),使AI转发面向z +。