x


Shooting script (2D game Turret/enemy)

Hey i'm currently working on a 2D game, and i've gotten to a stop where I'm trying to add somekinda enemies so i've copyed a script from the ¨TornadoTwins¨ but i've got one problem, my ¨enemy¨ keeps shooting 100 ¨bullits¨ at once instead of one at a time.

I'm gonna paste the script i'm using here maybe some of you could find my problem:

var LookAtTarget:Transform;

var damp = 6.0;

var bullitPrefab:Transform;

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);
       }

}

}

function shoot(seconds) {

if(seconds!=savedTime)
{

    var bullit = Instantiate(bullitPrefab, GameObject.Find("spawnPoint"). transform.position , Quaternion.identity);



    bullit.rigidbody.Addforce(Transform.Forward * 1000);


    savedTime=seconds;
}

}

more ▼

asked Mar 08 '12 at 04:33 AM

Alaro gravatar image

Alaro
1 7 7 7

First of all, learn to format your posts properly (it's not that hard, and the preview window exists to help you make sure it looks correct before you hit the post button). Secondly, make sure all your member variables have explicitly defined types. This can help in situations where you need one kind of number, and the program thinks you're talking about a different one.

Mar 08 '12 at 04:39 AM syclamoth

The tornado twins should open their own forum...

Mar 08 '12 at 05:55 AM fafase
(comments are locked)
10|3000 characters needed characters left

2 answers: sort voted first

seconds % 2 will return true if seconds is odd, you got that one right. However, as you're down casting Time.time from float to int, you loose al the information between seconds ! Between 1s and 2s, seconds will always be 1 and odd wil be true, instantiating tones of stuff.

Take a look at coroutines, or InvokeRepeating.

more ▼

answered Mar 08 '12 at 05:46 AM

Berenger gravatar image

Berenger
11k 12 19 53

(comments are locked)
10|3000 characters needed characters left

okey so i'll have to change the ¨var to seconds : int = Time.time;¨ ?

¨var projectile : Rigidbody;

InvokeRepeating("LaunchProjectile", 2, 0.3);

function LaunchProjectile () { var instance : Rigidbody = Instantiate(projectile); instance.velocity = Random.insideUnitSphere * 5; }¨

instead?

more ▼

answered Mar 08 '12 at 11:07 PM

Alaro gravatar image

Alaro
1 7 7 7

(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:

x5066
x1034
x652
x274

asked: Mar 08 '12 at 04:33 AM

Seen: 969 times

Last Updated: Mar 09 '12 at 08:29 AM