- Home /
Question by
portoaj · May 30, 2017 at 06:13 AM ·
rotationunity 2dquaternionquaternionsquaternion.lookrotation
How can I instantiate a gameobject facing another gameobject 2D?
I'm currently working on an arcade style game. I need one of the enemies to shoot at the player (in the direction of the players current position in 2d) however I'm having trouble getting the bullet/ laser to instantiate facing the player. This is my current code:`
public class AlienGunScript : MonoBehaviour {
[SerializeField]
Quaternion defaultRotation = Quaternion.identity;
[SerializeField]
float gunRotSpeed;
public GameObject target;
public GameObject Alien;
public Vector2 localPos;
public GameObject laser;
public Vector3 maybe;
void Update()
{
//Rotate towards the player
Vector3 dir = target.transform.position - transform.position;
dir.Normalize();
float zAngle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg - 90;
Quaternion desiredRot = Quaternion.Euler(0, 0, zAngle + 90);
transform.rotation = Quaternion.RotateTowards(transform.rotation, desiredRot, gunRotSpeed * Time.deltaTime);
}
void FixedUpdate()
{
transform.position = new Vector3(Alien.transform.position.x + localPos.x, Alien.transform.position.y + localPos.y,0f);
}
public void shootLasers()
{
Instantiate(laser, transform.position,Quaternion.identity);
Debug.Log("shot");
}
}` You can ignore the code in Update and Fixed Update as that is for moving the alien sprite this script is attached to. The problem area is in shootLasers where I'm not sure what to put for the third rotation parameter. Does anyone know how to find the rotation of a gameobject facing another gameobject in 2d? Sorry for my bad English, thanks for any help.
Comment