通过UI按钮快速射击问题

时间:2018-11-26 19:25:40

标签: unity3d

enter link description here因为我是新手,所以我在使用ui按钮逻辑时遇到问题,问题是如果我在更新语句中简单地使用if(Input.GetButton(“ Fire1”))语句,则一切都是工作正常意味着敌人在连续射击中受到了伤害,但是当我将其转换为(公共功能射击)时,我可以通过带有“事件触发器”的Ui射击按钮对人造平台使用,那么问题就是敌人是连续射击不会造成任何伤害

这是我如何通过检查器中的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); 
        }  

1 个答案:

答案 0 :(得分:0)

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

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

请注意,它可以双向工作,因此使用相同的方法可以从true变为false或从false变为true。