Может кто помочь 2 скрипта в один сделать. То есть у меня есть скрипт оружия. И есть отдельный скрипт чтобы оставались дыры от пуль. И со скриптом который отвечает за дыры от пуль косяк. То есть он реагирует на каждое нажатие нажатие левой кнопки. Даже когда пуль нету. Он всё равно оставляет дыры от пуль. Как можно привязать оба скрипта чтобы когда стреляешь оставались тока пули от пистолета. И когда пуль нету ничего не оставалось.
Скрипт Оружия :
using UnityEngine;
using System.Collections;
public class Weapon : MonoBehaviour {
//камера
public Transform _camTransform;
//анимации
public AnimationClip animationIdle;
public AnimationClip animationRun;
public AnimationClip animationFire;
public AnimationClip animationReload;
//звуки
public AudioClip soundReload;
public AudioClip soundFire;
public float ReloadTime = 3.5f;
public float FireTime = 0.5f;
public float FireRate = 0.5f;
public float Range = 1000;
public int Damage = 50;
public int BulletsInClip = 8;
public int Clips = 3;
public ParticleEmitter muzzleFlash;
private int BulletsLeft = 0;
private float NextFireTime = 0.0f;
private bool Reloading = false;
private bool isFire = false;
private float muzzleFlashLifeTime = 0.0f;
void Start () {
BulletsLeft = BulletsInClip;
}
void Update () {
if (muzzleFlashLifeTime > 0) {
muzzleFlashLifeTime--;
muzzleFlash.emit = true;
} else {
muzzleFlash.emit = false;
}
if (BulletsLeft == 0 && !Reloading && NextFireTime < Time.time) {
Reload ();
}
if (Input.GetButtonDown("Fire1")) {
Fire();
} else if (Input.GetKeyDown(KeyCode.R) ) {
Reload ();
} else if( !Reloading && !isFire ) {
Idle ();
}
}
private void Reload() {
if (Clips == 0) return;
Reloading = true;
Invoke ("ReloadingOf", ReloadTime);
animation.Stop( animationRun.name );
animation.CrossFade( animationReload.name );
audio.PlayOneShot( soundReload );
}
private void Idle() {
if(Input.GetKey( KeyCode.W)) {
animation.CrossFade( animationRun.name );
} else {
animation.CrossFade( animationIdle.name );
}
}
private void Run() {
animation.CrossFade( animationRun.name );
}
private void ReloadingOf() {
BulletsLeft = BulletsInClip;
Clips--;
Reloading = false;
}
private void FireOf() {
isFire = false;
}
private void Fire() {
isFire = true;
Invoke ("FireOf", FireTime);
if (BulletsLeft == 0)
return;
if (Time.time - FireRate > NextFireTime)
NextFireTime = Time.time - Time.deltaTime;
if (NextFireTime < Time.time && BulletsLeft != 0 && !Reloading) {
animation.Rewind ( animationFire.name );
animation.CrossFade( animationFire.name );
audio.PlayOneShot( soundFire );
Effects();
NextFireTime += FireRate;
BulletsLeft--;
Vector3 _direction = _camTransform.TransformDirection(Vector3.forward);
/*RaycastHit _hit;
if (Physics.Raycast(_camTransform.position, _direction, out _hit, Range))
{
if (_hit.transform.tag == "Enemy")
{
BotHealth eh = _hit.transform.GetComponent<BotHealth>();
eh.adjustHealth(-Damage, transform);
}
}*/
}
}
private void Effects () {
muzzleFlashLifeTime = 2.0f;
}
void OnGUI() {
int lHeight = 25;
int lWidth = 200;
Rect _pos = new Rect(Screen.width - lWidth, Screen.height - 50, lWidth, lHeight);
Rect _pos2 = new Rect(Screen.width - lWidth, Screen.height - 30, lWidth, lHeight);
string lb = "Bullets: " + BulletsLeft;
GUI.Label(_pos, lb);
string lb2 = "Clips: " + Clips;
GUI.Label(_pos2, lb2);
}
}