Hi! The problem is that gun accuraty is perfect. How to make spread with raycast? Thanks for help!
var sparkle : ParticleEmitter;
var damage = 3;
var range = 100;
var spawnPoint : GameObject;
static var ammo = 120;
static var magazineSize = 30;
var fireRate : float = 0.1;
var lastShot : float = 0.0;
var reloadTime = 1.5;
var force = 100;
static var canReload = true;
static var canShoot = true;
var muzzleFlash : GameObject;
var muzzleFlashPossition : GameObject;
function Update () {
autoReload();
Reload();
WeaponFire ();
}
function WeaponFire() {
if (Input.GetButton("Fire1") magazineSize > 0 Time.time > lastShot + fireRate canShoot == true)
{
var direction = transform.TransformDirection(Vector3.forward);
var hit : RaycastHit;
audio.Play();
if (Physics.Raycast(spawnPoint.transform.position,transform.forward,hit,range))
{
if (hit.rigidbody)
{
hit.rigidbody.AddForceAtPosition(force * direction,hit.point);
}
Instantiate(sparkle,hit.point, Quaternion.identity);
hit.collider.SendMessageUpwards("ApplyDamage",damage,SendMessageOptions.DontRequireReceiver);
}
Instantiate(muzzleFlash,muzzleFlashPossition.transform.position,muzzleFlashPossition.transform.rotation);
magazineSize--;
lastShot = Time.time;
}
}
function autoReload() {
if ( magazineSize == 0 canReload == true ammo != 0)
{
canReload = false;
canShoot = false;
yield WaitForSeconds(reloadTime);
if (ammo >= 30 ) {
needAmmo = 30 - magazineSize;
ammo -= needAmmo;
magazineSize = 30;
needAmmo = 0;
} else {
for (var i=0;i < 30; i++)
{
if (ammo > 0 magazineSize + needAmmo < 30)
{
ammo--;
needAmmo++;
}
}
magazineSize += needAmmo;
needAmmo = 0;
}
canReload = true;
canShoot = true;
}
}
function Reload() {
if (Input.GetButtonDown("Reload") ammo > 0 canReload == true magazineSize != 30)
{
canReload = false;
canShoot = false;
yield WaitForSeconds(reloadTime);
if (ammo >= 30 ) {
needAmmo = 30 - magazineSize;
ammo -= needAmmo;
magazineSize = 30;
needAmmo = 0;
} else {
for (var i=0;i < 30; i++)
{
if (ammo > 0 magazineSize + needAmmo < 30)
{
ammo--;
needAmmo++;
}
}
magazineSize += needAmmo;
needAmmo = 0;
}
canReload = true;
canShoot = true;
}
}