Hallo. I want to create FPS. I was finding gun shoot script for 2 days. I found narutoisgreat1234's Raycast shoot script. Here is it with my small modifications. :`
var Range : float = 1000; var Force : float = 1000; var Clips : int = 20; var BulletPerClip : int = 60; var RelaodTime : float = 3.3; var Damage : int = 10; var MoveSpeed: float = 1; var BulletsLeft : int = 0; var ShootTimer : float = 0; var ShootCooler : float = 0.5; public var ShootAudio : AudioClip; public var ReloadAudio : AudioClip; public var muzzleFlash : ParticleEmitter; public var hitParticles : ParticleEmitter; public var muzzleFlashTimer : float = 0; public var KeyCooler : float = 0.5; public var KeyTimer : float = 0; public var muzzleFlashCooler : float = 0.5; public var Lights1 : GameObject; public var Lights2 : GameObject ; public var Lights3 : GameObject; function Start(){ BulletsLeft = BulletPerClip; muzzleFlash.emit = false; DefaultPos = transform.localPosition; hitParticles.emit = false; } function Update () { if( KeyTimer > 0){ KeyTimer -= Time.deltaTime; } if( KeyTimer < 0){ KeyTimer= 0; } if( muzzleFlashTimer > 0){ muzzleFlashTimer -= Time.deltaTime; MuzzleFlash(); } if( muzzleFlashTimer < 0){ muzzleFlashTimer = 0; } if( ShootTimer > 0){ ShootTimer -= Time.deltaTime; } if(ShootTimer < 0){ ShootTimer = 0; } if( KeyTimer == 0){ if(Input.GetMouseButton(0) && BulletsLeft ){ if( ShootTimer == 0){ PlayShootAudio(); RayShoot(); ShootTimer = ShootCooler; KeyTimer = KeyCooler; } if( muzzleFlashTimer == 0){ muzzleFlashTimer = muzzleFlashCooler; MuzzleFlash (); } } } } function MuzzleFlash (){ if( muzzleFlashTimer > 0){ muzzleFlash.emit = false; Lights1.active = false; Lights2.active = false; Lights3.active = false; } if( muzzleFlashTimer == muzzleFlashCooler){ muzzleFlash.transform.localRotation = Quaternion.AngleAxis(Random.value * 360 * 2000000, Vector3.forward); muzzleFlash.emit = true; Lights1.active = true; Lights2.active = true; Lights3.active = true; } } function RayShoot (){ //GameObject.Find("m1911pistoleReloadandShooting").animation.Play("Shoot"); //(if your player has animations then remove the // infront of the GameObject.Find and then //(replace your objetcs name there. and then the animation name) var hit : RaycastHit; var direction : Vector3 = transform.TransformDirection( Vector3.forward); Debug.DrawRay(transform.position , direction * Range , Color.blue); if(Physics.Raycast(transform.position , direction , hit, Range)){ var hitRotation = Quaternion.FromToRotation(Vector3.up, hit.normal); if(hit.rigidbody){ if( hitParticles){ hitParticles.transform.position = hit.point; hitParticles.transform.localRotation = Quaternion.FromToRotation(Vector3.up, hit.normal); hitParticles.Emit(); hit.rigidbody.AddForceAtPosition( direction * Force , hit.point); hit.collider.SendMessageUpwards("ApplyDamage" , Damage , SendMessageOptions.DontRequireReceiver); } } } BulletsLeft --; if(BulletsLeft < 0){ BulletsLeft = 0; } if( BulletsLeft == 0 ){ Reload(); } } function Reload (){ PlayReloadAudio(); yield WaitForSeconds(0.2); //GameObject.Find("m1911pistoleReloadandShooting").animation.Play("Reload"); //(if your player has animations then remove the // infront of the GameObject.Find and then //(replace your objetcs name there. and then the animation name) yield WaitForSeconds( RelaodTime); if(Clips > 0){ BulletsLeft = BulletPerClip; Clips -= 1; } } function PlayShootAudio(){ audio.PlayOneShot( ShootAudio); } function PlayReloadAudio(){ audio.PlayOneShot( ReloadAudio); }` Now what's my problem. When i shoot, drawray (debug blue line) goes down and i can't interact with others things because drawray is down. Thanks in advance !