Привет всем, такая проблема не могу разобраться как сделать стрельбу по нажатию на кнопку на экране. Кнопку я добавил в канвас добавил кней эвент систепу. У меня есть "пушка" которая должна стрелять по нажатию на эту кнопку. Вот скрипт внизу он очень простой.
Код
using UnityEngine; using System.Collections;
public class Shoot : MonoBehaviour {
public GameObject bullet;//переменая для префаба с пулей public float delayTime = 0.5f;//темп стрельбы
private float counter; // Use this for initialization void Start () {
}
// Update is called once per frame void FixedUpdate () { if (Input.GetKey ("Fire")) { Instantiate(bullet,transform.position,transform.rotation); GetComponent<AudioSource>().Play(); counter = 0; } counter += Time.deltaTime; } }
Убери с кнопки Event System и добавь Event Trigger. Добавь нужное условие, когда будет вызываться выстрел. Далее... Сделай public функцию
Код
public void Fire() { Instantiate(bullet,transform.position,transform.rotation); GetComponent<AudioSource>().Play(); counter = 0; }
Добавь в инспекторе в условие того триггера объект на котором висит этот скрипт (можно повесить скрпит на этот же объект, на котором триггер). Выбери публичную функцию "Fire" в выпадающем меню и PROFIT!
PS Может я не правильно выразился... Не удаляй объект EventSystem, который добавляется автоматом при создании канваса. Убери компонент Event System с кнопки, если ты туда его добавлял.
Я тут подумал... Тебе скорее всего хочется сделать так, чтобы при нажатой кнопки воспроизводилось действие. Тогда код будет такой:
romeo98, я разобрался, что там было не так правда теперь он постоянно их создает, а не тогда когда кнопку нажимаешь.
Добавлено (05 июля 2015, 17:33) --------------------------------------------- Блин получилось только смену оружия сделать таким оброзом, а стрельбу нет от все время стриляет без нажатия
Добавлено (05 июля 2015, 18:14) --------------------------------------------- Поколупался все равно не могу правильно настроить, теперь можно стрелять правда делает это при любом нажатии на экран как это исправить ?
Добавлено (05 июля 2015, 19:08) --------------------------------------------- beril, я дописал его немного, правда не пойму еще почему следы от попадания создаются в воздухе особенно если в одно место стреляю
Код
using UnityEngine; using System.Collections;
public class Shoot : MonoBehaviour {
public GameObject bullet;//переменая для префаба с пулей public GameObject bulletHole;//след от попадания public float delayTime = 0.5f;//темп стрельбы
private float counter; // Use this for initialization void Start () {
}
// Update is called once per frame public void FixedUpdate () { FireGun (); }
public void FireGun() { if (Input.GetButtonDown("Fire1")) { Instantiate(bullet,transform.position,transform.rotation); GetComponent<AudioSource>().Play(); counter = 0;
RaycastHit hit; Ray ray = new Ray(transform.position, transform.forward); if(Physics.Raycast(ray,out hit,100f)) { Instantiate(bulletHole, hit.point,Quaternion.FromToRotation(Vector3.up, hit.normal)); } } counter += Time.deltaTime; } }