x


Help First Person Shooter Bullets instantianion

Possible Duplicate:
Help First Person Shooter Bullets instantianion

may u help me with this script,i cant get the bullets "projectile" to shoot from the child object "BulletSpawn" at all. they did it when i had the get button down, instansiate script, but that onlt made one every click i want one everytime the gun shoots. the scritp is a modified version of "MachineGun" from unity as i dont fully know hoiw to script. (java)

var projectile : Rigidbody; var range = 100.0; var fireRate = 0.7; var force = 10.0; var damage = 5.0; var bulletsPerClip = 40; var clips = 20; var reloadTime = 0.5; var hitParticles : ParticleEmitter; var muzzleFlash : Renderer; var muzzleFlame : Light; var bulletSpawn : Transform;

private var bulletsLeft : int = 0; private var nextFireTime = 0.0; private var m_LastFrameShot = -1; private var shoot;

function Start () { hitParticles = GetComponent (ParticleEmitter);

// We don't want to emit particles all the time, only when we hit something. if (hitParticles) hitParticles.emit = false; bulletsLeft = bulletsPerClip; }

function LateUpdate() { if (muzzleFlash) { // We shot this frame, enable the muzzle flash if (m_LastFrameShot == Time.frameCount) { muzzleFlash.transform.localRotation = Quaternion.AngleAxis(Random.value * 360, Vector3.forward); muzzleFlash.enabled = true; muzzleFlame.enabled = true;

if (audio) { audio.Play();

}

} else { // We didn't, disable the muzzle flash muzzleFlash.enabled = false; enabled = false; muzzleFlame.enabled = false; enabled = false;

} } }

function Shoot () { if (m_LastFrameShot == Time.frameCount) { Instantiate (projectile, bulletSpawn.position, bulletSpawn.rotation); } }

function Fire () { if (bulletsLeft == 0) return;

// If there is more than one bullet between the last and this frame // Reset the nextFireTime if (Time.time - fireRate > nextFireTime) nextFireTime = Time.time - Time.deltaTime;

// Keep firing until we used up the fire time while( nextFireTime < Time.time && bulletsLeft != 0) { FireOneShot(); nextFireTime += fireRate; } }

function FireOneShot () { var direction = transform.TransformDirection(Vector3.forward); var hit : RaycastHit;

// Did we hit anything? if (Physics.Raycast (transform.position, direction, hit, range)) { // Apply a force to the rigidbody we hit if (hit.rigidbody) hit.rigidbody.AddForceAtPosition(force * direction, hit.point);

// Place the particle system for spawing out of place where we hit the surface! // And spawn a couple of particles if (hitParticles) { hitParticles.transform.position = hit.point; hitParticles.transform.rotation = Quaternion.FromToRotation(Vector3.up, hit.normal); hitParticles.Emit(); }

// Send a damage message to the hit object hit.collider.SendMessageUpwards("ApplyDamage", damage, SendMessageOptions.DontRequireReceiver); }

bulletsLeft--;

// Register that we shot this frame, // so that the LateUpdate function enabled the muzzleflash renderer for one frame m_LastFrameShot = Time.frameCount; enabled = true;

// Reload gun in reload Time if (bulletsLeft == 0) Reload(); }

function Reload () {

// Wait for reload time first - then add more bullets! yield WaitForSeconds(reloadTime);

} // We have a clip left reload if (clips > 0) { clips--; bulletsLeft = bulletsPerClip; }

function GetBulletsLeft () { return bulletsLeft; }

more ▼

asked Dec 05 '10 at 10:40 AM

The Game Object gravatar image

The Game Object
1 2 2 2

This is a duplicate question, please remove this one (or the other one).

Dec 05 '10 at 12:29 PM TowerOfBricks
(comments are locked)
10|3000 characters needed characters left

0 answers: sort voted first
Be the first one to answer this question
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:

x1668
x329
x69

asked: Dec 05 '10 at 10:40 AM

Seen: 903 times

Last Updated: Dec 05 '10 at 10:40 AM