我有一个代码可以创建火球并将其转向敌人,但是它只能正常地向右对角线工作,在其他情况下它的行为很奇怪
IEnumerator ThrowFireballs()
{
while (true)
{
GameObject currentTarget = GetTarget();
this.currentTarget = currentTarget;
if (currentTarget != null)
{
Vector3 difference = (currentTarget.transform.position - transform.position);
float RotZ = Mathf.Atan2(difference.x, difference.y) * Mathf.Rad2Deg;
transform.rotation = Quaternion.Euler(0, 0, RotZ);
Instantiate(fireBall, transform.position, transform.rotation);
}
yield return new WaitForSeconds(CoolDown);
}
}
GameObject GetTarget()
{
Collider2D[] colls = new Collider2D[0];
colls = Physics2D.OverlapCircleAll(transform.position, radius, 1 << targetLayer);
if (colls.Length > 0)
{
return colls[UnityEngine.Random.Range(0, colls.Length)].gameObject;
}
return null;
}
火球飞行脚本在另一个文件中描述并且工作正常。测试项目上的类似代码也运行良好
void Update()
{
Vector3 difference = target.transform.position - transform.position;
float rotationZ = Mathf.Atan2(difference.y, difference.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.Euler(0f, 0f, rotationZ);
}
PS请不要写代码的简洁性、变量名称等。只写上述具体问题