У меня есть GameObject (HandGun), который я отключаю (setActive (false)) в определенный момент игры. К ручному оружию прикреплен скрипт с именем GunController, который заботится о стрельбе каждый раз, когда я нажимаю на курок.
Дело в том, что когда я отключаю пистолет, я все еще могу стрелять и видеть пулю из ничего, потому что объект GameGun GameObject успешно пропал.
Сценарий GunController:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using EZEffects;
public class GunController : MonoBehaviour {
public GameObject controllerRight;
public AudioClip clip;
AudioSource sound;
public int damage;
private SteamVR_TrackedObject trackedObj;
public SteamVR_Controller.Device device;
private SteamVR_TrackedController controller;
public EffectTracer TracerEffect;
public EffectImpact ImpactEffect;
public Transform muzzleTransform;
// Use this for initialization
void Start () {
sound = gameObject.AddComponent<AudioSource>();
controller = controllerRight.GetComponent<SteamVR_TrackedController>();
controller.TriggerClicked += TriggerPressed;
trackedObj = controllerRight.GetComponent<SteamVR_TrackedObject>();
device = SteamVR_Controller.Input((int)trackedObj.index);
}
private void TriggerPressed(object sender, ClickedEventArgs e)
{
shootWeapon();
}
public void shootWeapon()
{
sound.PlayOneShot(clip,0.2f);
RaycastHit hit = new RaycastHit();
Ray ray = new Ray(muzzleTransform.position, muzzleTransform.forward);
device.TriggerHapticPulse(3999);
TracerEffect.ShowTracerEffect(muzzleTransform.position, muzzleTransform.forward, 250f);
if(Physics.Raycast(ray, out hit, 5000f))
{
if (hit.collider.attachedRigidbody)
{
Enemy enemy = hit.collider.gameObject.GetComponent<Enemy>();
if (enemy)
{
enemy.TakeDamage(damage);
}
ImpactEffect.ShowImpactEffect(hit.transform.position);
}
}
}
// Update is called once per frame
void Update () {
}
}
Часть скрипта Inspector, которая отключает игровой объект HandGun:
public void showShop()
{
shop.SetActive(true);
shopActive = true;
if (actualGun == null)
{
actualGun = handGun;
}
actualGun.SetActive(false);
model.SetActive(true);
}
Более того, если я деактивирую скрипт GunController вручную, когда игра запущена, я все равно могу стрелять, чего я совершенно не понимаю. Я использую EZEffect, которое можно найти в магазине Unity.
Что я делаю не так? Что мне делать?
В любом случае, заранее благодарю за помощь!