- Home /
Making An Automatic Weapon from FPS Tutorial
I am trying to make an automatic weapon from the FPS tutorial instead of semi. And have teh firerate be the delay between each shot. Ihave setup an enum and here is my code so far.
function Fire() { var direction = transform.TransformDirection(Vector3.forward); var hit : RaycastHit;
if (behaviorType == behavior.Spew)
{
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;
}
}
Thats only for the Spew(automatic) enum. The code for FireOneShot is this.
function FireOneShot () { var direction = transform.TransformDirection(Vector3.forward); var hit : RaycastHit; // Did we hit anything? if (Physics.Raycast (mytrans.position, direction, hit, range)) { networkView.RPC("FireOneShot",RPCMode.Others,false, hit.point, hit.normal); // 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
var settingsArray = new String[2];
settingsArray[0]=damage+"";
settingsArray[1]=localPlayerName;
if (hit.collider.gameObject.name == "Ground")
{
//3
dirt = Instantiate(dirtParticles ,hit.point ,Quaternion.identity);
dirt.transform.rotation = Quaternion.FromToRotation(Vector3.up, hit.normal);
//hit.collider.SendMessageUpwards("ApplyDamage", damage, SendMessageOptions.DontRequireReceiver);
hit.collider.SendMessage("ApplyDamage", settingsArray, SendMessageOptions.DontRequireReceiver);
}
else if (hit.collider.gameObject.name == "Water")
{
water = Instantiate(waterParticles ,hit.point ,Quaternion.identity);
water.transform.rotation = Quaternion.FromToRotation(Vector3.up, hit.normal);
hit.collider.SendMessage("ApplyDamage", settingsArray, SendMessageOptions.DontRequireReceiver);
}
else if (hit.collider.gameObject.name == "base")
{
//1
sparks = Instantiate(sparkParticles ,hit.point ,Quaternion.identity);
sparks.transform.rotation = Quaternion.FromToRotation(Vector3.up, hit.normal);
hit.collider.SendMessage("ApplyDamage", settingsArray, SendMessageOptions.DontRequireReceiver);
}
else if (hit.collider.gameObject.tag == "Enemy")
{
//1
//sparks = Instantiate(sparkParticles ,hit.point ,Quaternion.identity);
//sparks.transform.rotation = Quaternion.FromToRotation(Vector3.up, hit.normal);
blood = Instantiate(bloodParticles ,hit.point ,Quaternion.identity);
blood.transform.rotation = Quaternion.FromToRotation(Vector3.up, hit.normal);
AchievementManager.GetInstance().IncrementProgress(AchievementIDs.First_Timer);
hit.collider.SendMessage("ApplyDamage", settingsArray, SendMessageOptions.DontRequireReceiver);
}
else if (hit.collider.gameObject.tag == "Friendly")
{
//1
//sparks = Instantiate(sparkParticles ,hit.point ,Quaternion.identity);
//sparks.transform.rotation = Quaternion.FromToRotation(Vector3.up, hit.normal);
blood = Instantiate(bloodParticles ,hit.point ,Quaternion.identity);
blood.transform.rotation = Quaternion.FromToRotation(Vector3.up, hit.normal);
AchievementManager.GetInstance().IncrementProgress(AchievementIDs.Mis_Fire);
hit.collider.SendMessage("ApplyDamage", settingsArray, SendMessageOptions.DontRequireReceiver);
}
// Send a damage message to the hit object
hit.collider.SendMessage("ApplyDamage", settingsArray, 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();
}
Your answer
Follow this Question
Related Questions
Weapon Prefab 0 Answers
Avart Fate with Gun Movement 0 Answers
Problem With Weapon Firing Mechanism 1 Answer
C# Switch Weapon 2 Answers
Non-player-held weapons rendering through environment 1 Answer