If I have a cube facing a random direction, how can I make it shoot a projectile in it's "forward" direction?
Basically, just instantiate the bullet with the same rotation as the cube:
var spawnDistance : float = 1.0f; // don't want the bullet spawn in centre
// ...
GameObject.Instatiate(prefab, transform.position + spawnDistance * transform.forward, transform.rotation);
// ...
and let the bullet move itself in the transform.forward direction:
var speed : float = 2.0;
function Update() {
transform.position += Time.deltaTime * speed * transform.forward;
}
or if you're using a rigidbody as bullet:
var force : float = 20.0f;
function Start() {
rigidbody.AddForce(transform.forward * force);
}
you can use transformdirection, which ensures that the projectile will have a correct direction in wordl coordinates ( in case the object that instantiates your projectile is not a "root" object )
some code:
var newProjectile = Instantiate( projectile, transform.position, transform.rotation );
newProjectile.velocity = transform.TransformDirection( Vector3( 0, 0, speed) );
we are using Vector3( 0, 0, speed ) because in Unity the default forward axis is Z
For the Projectile you can use following:
var projectile: GameObject; var force: float;
function Update(){ if(Input.GetMouseButtonDown(0)){ projectile.rigidbody.AddForce(projectile.transform.forward projectile.rigidbody.mass force, ForceMode.Impulse);
}
}
this will Add an immidiate force to the object to forward.