# shooting in 2-d

 0 Im trying to shoot in the y-axis however the bullet is coming from the left side in the z axis of the screen instead from the object I want it to come from This is my code var projectile : Rigidbody; var initialSpeed = 20.0; var reloadTime = 0.5; var ammoCount = 20; private var lastShot = -10.0; function Fire () { // Did the time exceed the reload time? if (Time.time > reloadTime + lastShot && ammoCount > 0) { // create a new projectile, use the same position and rotation as the Launcher. var instantiatedProjectile : Rigidbody = Instantiate (projectile, transform.position, transform.rotation); `````` // Give it an initial forward velocity. The direction is along the z-axis of the missile launcher's transform. instantiatedProjectile.velocity = transform.TransformDirection(Vector3 (0, 0, initialSpeed)); // Ignore collisions between the missile and the character controller Physics.IgnoreCollision(instantiatedProjectile.collider, transform.root.collider); lastShot = Time.time; ammoCount--; } `````` } more ▼ asked Sep 15 '10 at 04:40 AM sam 48 ● 21 ● 24 ● 28 I think you're just a little confused about the axes themselves. In Unity, the global y axis represents the up vector while the x and z represent side vectors. The local x, y, and z axes represent the right, up and forward axes of the transform respectively. When you say you want to shoot in the y axis (or up axis), which one do you want local or global? Since you are creating a velocity vector3 of initialSpeed on the local Z axis of the transform, of course it will have a velocity along the local Z (not Y) axis. Please rephrase to provide a clearer idea of your use case? Sep 15 '10 at 02:09 PM skovacs1 add new comment (comments are locked) 10|3000 characters needed characters left ▼ Viewable by all users

# Because "transform.TransformDirection(x,y,z)"

``````var projectile : Rigidbody;
var initialSpeed = 20.0;
var ammoCount = 20;
private var lastShot = -10.0;

function Fire ()
{
// Did the time exceed the reload time?
if (Time.time > reloadTime + lastShot && ammoCount > 0)
{
// create a new projectile, use the same position and rotation as the Launcher.
var instantiatedProjectile : Rigidbody = Instantiate (projectile, transform.position, transform.rotation);

// Give it an initial forward velocity. The direction is along the z-axis of the missile launcher's transform.
instantiatedProjectile.velocity = transform.TransformDirection(Vector3 (0, initialSpeed,0));

// Ignore collisions between the missile and the character controller
Physics.IgnoreCollision(instantiatedProjectile.collider, transform.root.collider);

lastShot = Time.time;
ammoCount--;
}
}
``````
more ▼

answered Jun 20 '11 at 09:12 AM

heiheiun
16 1

By Email: