Пистолет должен стрелять только при нажатии на кнопку, а не на весь экран - PullRequest
0 голосов
/ 15 мая 2019

Я сделал 3d-игру, и у меня есть контроллер от первого лица, управляемый джойстиком. Я хочу, чтобы мой плеер стрелял, только когда я касаюсь кнопки на экране, но теперь мой плеер стреляет, если я что-то касаюсь на экране. Это скрипт для функции съемки:

using UnityEngine;
using UnityEngine.UI;

public class Gun : MonoBehaviour
{
    public float damage = 10f;
    public float range = 100f;
    public Camera fpsCam;
    public Button button;

    // Start is called before the first frame update
    void Start()
    {
        //Calls the TaskOnClick/TaskWithParameters/ButtonClicked method when you click the Button
       button.onClick.AddListener(TaskOnClick);
    }

    // Update is called once per frame
    void Update()

    {
        Vector3 forward = transform.TransformDirection(Vector3.forward) * 10;
        Debug.DrawRay(transform.position, forward, Color.green);


    }
    void Shoot()
    {
        RaycastHit hit;
       if( Physics.Raycast(fpsCam.transform.position, fpsCam.transform.forward, out hit, range))
        {
            Debug.Log(hit.transform.name);
            Target target = hit.transform.GetComponent<Target>();
            if(target != null)
            {
                target.TakeDamage(damage);
            }
        }
    }
    void OnCollisionEnter(Collision collision)
    {
        Debug.DrawRay(collision.contacts[0].point, collision.contacts[0].normal, Color.green, 2, false);

    }


    void TaskOnClick()
    {

            Shoot();


    }
}

1 Ответ

0 голосов
/ 15 мая 2019

Ваш метод Shoot() запускается всякий раз, когда вы нажимаете кнопку «Fire1», поскольку единственная проверка, которую вы выполняете, это если (Input.GetButtonDown("Fire1")).

Если вы хотите зависеть от нажатия кнопки, вам нужно убрать эту часть кода и вызывать Shoot() всякий раз, когда вы нажимаете кнопку.

Вы можете добавить событие внажмите кнопку с кодом, как объяснено здесь

  public Button m_YourFirstButton;

    void Start()
    {
        //Calls the TaskOnClick/TaskWithParameters/ButtonClicked method when you click the Button
        m_YourFirstButton.onClick.AddListener(TaskOnClick);
    }

    void TaskOnClick()
    {
        //Output this to console when Button1 or Button3 is clicked
        Debug.Log("You have clicked the button!");
    }

, или вы можете позвонить ему из инспектора, сославшись на свой пистолет "Монобихиор".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...