x


shooting in 2-d

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 gravatar image

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
(comments are locked)
10|3000 characters needed characters left

1 answer: sort oldest

To see "initialSpeed", in "transform.TransformDirection(0,0,initialSpeed)",

change to "transform.TransformDirection(0,initialSpeed,0)"

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

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, 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 gravatar image

heiheiun
16 1

(comments are locked)
10|3000 characters needed characters left
Your answer
toggle preview:

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Topics:

x286
x79

asked: Sep 15 '10 at 04:40 AM

Seen: 644 times

Last Updated: Jun 20 '11 at 09:15 AM