Стрельба для платформера на C#

Программирование на Юнити.

Стрельба для платформера на C#

Сообщение Dragon-FAST 13 фев 2017, 06:22

Ребят, нужна помощь.
Суть такова:
Имею персонажа, на нём висит пустой объект "gun"

Как сделать создание префаба который указан в "shooter" в координатах указанных у объекта "gun"
Синтаксис:
Используется csharp
        public Transform gun;
        public GameObject shooter;

На данный момент скрипт выглядит вот так:
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class Gun : MonoBehaviour {
        public Transform gun;
        public GameObject shooter;
        private void Update(){
                if (Input.GetButton ("Fire"))
                {
                 
                }
                }
}


Знаю, вопрос - глуповат; Но всё же.
Всем кто поможет "Спс"
Аватара пользователя
Dragon-FAST
UNIт
 
Сообщения: 92
Зарегистрирован: 15 авг 2016, 08:29

Re: Стрельба для платформера на C#

Сообщение samana 13 фев 2017, 08:47

Синтаксис:
Используется csharp
GameObject newShoot = Instantiate<GameObject>(shooter);
newShoot.transform.position = gun.position;
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Стрельба для платформера на C#

Сообщение Dragon-FAST 13 фев 2017, 10:02

samana писал(а):
Синтаксис:
Используется csharp
GameObject newShoot = Instantiate<GameObject>(shooter);
newShoot.transform.position = gun.position;

Спасибо, всё работает)
Аватара пользователя
Dragon-FAST
UNIт
 
Сообщения: 92
Зарегистрирован: 15 авг 2016, 08:29

Re: Стрельба для платформера на C#

Сообщение Dragon-FAST 13 фев 2017, 10:31

Кому нужно будет: Вот получившийся скрипт стрельбы.
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class Gun : MonoBehaviour {
        public Transform gun;
        public GameObject shooter;
        public bool fair = true;
        public int reserv = 0;
        private void Update(){

                if (reserv >= 1) {
                        fair = false;
                } else if (reserv < 1) {
                        fair = true;
                }
                if (Input.GetButton ("Fire") && fair == true)
                {
                        GameObject newShoot = Instantiate<GameObject>(shooter);
                        newShoot.transform.position = gun.position;
                }
                if (Input.GetButton ("Fire"))
                {
                        reserv = 1;
                }
                else
                {
                        reserv = 0;
                }
}
}

Переменные "reserv" и "fair" отвечают за задержку между выстрелами. здесь стрельба как из пистолета или дробовика (кому как) - одно нажатие один выстрел если немного переделать то и автомат получится))))
----------------------------------------------------
!!! если последние две "if"ки объединить то задержка будет глючить!!!
Аватара пользователя
Dragon-FAST
UNIт
 
Сообщения: 92
Зарегистрирован: 15 авг 2016, 08:29

Re: Стрельба для платформера на C#

Сообщение samana 13 фев 2017, 11:01

Dragon-FAST писал(а):Переменные "reserv" и "fair" отвечают за задержку между выстрелами. здесь стрельба как из пистолета или дробовика (кому как) - одно нажатие один выстрел


Есть намного проще решение Input.GetButtonDown и никаких дополнительных условий и переменных не понадобится.

Синтаксис:
Используется csharp
private void Update()
{
    if (Input.GetButtonDown("Fire1"))
    {
        GameObject newShoot = Instantiate<GameObject>(shooter);
        newShoot.transform.position = gun.position;
    }
}
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Стрельба для платформера на C#

Сообщение Dragon-FAST 14 фев 2017, 03:33

samana писал(а):
Dragon-FAST писал(а):Переменные "reserv" и "fair" отвечают за задержку между выстрелами. здесь стрельба как из пистолета или дробовика (кому как) - одно нажатие один выстрел


Есть намного проще решение Input.GetButtonDown и никаких дополнительных условий и переменных не понадобится.

Синтаксис:
Используется csharp
private void Update()
{
    if (Input.GetButtonDown("Fire1"))
    {
        GameObject newShoot = Instantiate<GameObject>(shooter);
        newShoot.transform.position = gun.position;
    }
}

Можно и так)))
Аватара пользователя
Dragon-FAST
UNIт
 
Сообщения: 92
Зарегистрирован: 15 авг 2016, 08:29


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9