首页 > 解决方案 > 通过 UI 按钮快速射击问题

问题描述

在此处输入链接描述,因为我是新手,我遇到了 ui 按钮逻辑问题,问题是如果我在 Update 语句中简单地使用语句 if(Input.GetButton("Fire1")) 一切正常意味着敌人在连续射击时受到伤害,但是当我将其转换为(公共功能 Fire )时,我可以使用“事件触发器”通过 Ui 开火按钮使用 Android 平台,然后问题就出现了敌人没有受到任何伤害在连续射击

这是我如何在检查器中通过 UI 实现的代码和图片

      function Update(){

          if(firing==true){
         Fire();
      }

           }



       public function Fire(){


         firing=true;


    if(AK47Ammo.CurrentAmmo>=1)

    {
            if(Firing==0)
        {
        AK47Firing();
        }
            }
        }


 public function notFiring(){
 firing=false;
  }



function AK47Firing()
{
        nextFire=Time.time+fireRate;

        anim.SetBool("Fire",true);

    AK47Ammo.CurrentAmmo -= 1;


        gunSound.Play();
        Flash.SetActive(true);
    (MuzzleOff());
        var hitShot:RaycastHit;
    if(Physics.Raycast(transform.position,transform.TransformDirection(Vector3.forward)*100,hitShot))
        {

  hitShot.transform.SendMessage("DeductPoints",DamageAmount,SendMessageOptions.DontRequireReceiver );    
        }                
}

         function MuzzleOff()
        {
                                   Firing=1;

            yield WaitForSeconds(0.2);
            Firing=0;
            var ps: ParticleSystem = GetComponent.<ParticleSystem>();
         ps.Stop();
        Flash.SetActive(false);
                    Shell.SetActive(false); 
        }  

标签: unity3d

解决方案


我不确定 javascript 中的语法,但您可能需要创建一个在事件触发器上将触发从 true 翻转为 false 的方法。像这样:

public void AutoFireToggle()
{
    firing = !firing;
}

请注意,它可以双向工作,因此可以使用相同的方法从真到假或从假到真。


推荐阅读