- Home /
Turret Script Problem
I'm using my modified version of TornadoTwins turret script. The problem is, no matter which way the turret faces. It always shoots along the Z axis. So even when it's facing me, it shoots straight, not at me. Here's the turret script:
var LookAtTarget : Transform;
var damp : float = 6.0;
var bulletPrefab : GameObject;
var savedTime = 0;
function Update ()
{
if(LookAtTarget)
{
var rotate = Quaternion.LookRotation(LookAtTarget.position - transform.position);
transform.rotation = Quaternion.Slerp(transform.rotation, rotate, Time.deltaTime * damp);
var seconds : int = Time.time;
var oddeven = (seconds % 2);
if(oddeven)
Shoot(seconds);
transform.LookAt(LookAtTarget);
}
}
function Shoot(seconds)
{
if(seconds!=savedTime)
{
var bullet = Instantiate(bulletPrefab,transform.Find("spawnPoint").transform.position , Quaternion.identity);
}
savedTime=seconds;
}
Answer by roburky · Aug 14, 2011 at 08:07 PM
Your turret script creates bullets at the location of a child transform called "spawnPoint", but all bullets will be facing the same direction. There is also no code in there to make the bullets move.
I suspect your bullet script has the movement code, and will cause them to move forwards. In which case, you need to have the bullets oriented to face the correct direction when you instantiate them.
Try replacing the "Quaternion.identity" part of the Instantiate line in your Shoot function with "transform.rotation" to give the bullets you create the same rotation as your turret.
Thank you! You're correct, the bullet script has the movement code. thank you again. It works!
Answer by Crowe T. Robot · Aug 14, 2011 at 07:43 PM
What I'm imagining happening is that after you instantiate your bullet prefab, you should rotate it so it's rotation matches that of the turret... then when you apply your movement code in your Bullet script, you would simply translate (or add force) in the local positive z axis (transform.forward).
Either that or you're applying your movement in world space, when you should be moving z forward in local space. Kind of hard to tell without the movement code for the bullet.
You're answer is correct too, but I read his first. But thank you anyway.
Your answer
Follow this Question
Related Questions
Turret Range Script 2 Answers
Turret shooting at me 1 Answer
Turret Shooting 1 Answer
The name 'Joystick' does not denote a valid type ('not found') 2 Answers
Unity3D Ai wont shoot 1 Answer