Страница 1 из 1

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

СообщениеДобавлено: 13 фев 2017, 06:22
Dragon-FAST
Ребят, нужна помощь.
Суть такова:
Имею персонажа, на нём висит пустой объект "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"))
                {
                 
                }
                }
}


Знаю, вопрос - глуповат; Но всё же.
Всем кто поможет "Спс"

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

СообщениеДобавлено: 13 фев 2017, 08:47
samana
Синтаксис:
Используется csharp
GameObject newShoot = Instantiate<GameObject>(shooter);
newShoot.transform.position = gun.position;

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

СообщениеДобавлено: 13 фев 2017, 10:02
Dragon-FAST
samana писал(а):
Синтаксис:
Используется csharp
GameObject newShoot = Instantiate<GameObject>(shooter);
newShoot.transform.position = gun.position;

Спасибо, всё работает)

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

СообщениеДобавлено: 13 фев 2017, 10:31
Dragon-FAST
Кому нужно будет: Вот получившийся скрипт стрельбы.
Синтаксис:
Используется 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"ки объединить то задержка будет глючить!!!

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

СообщениеДобавлено: 13 фев 2017, 11:01
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;
    }
}

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

СообщениеДобавлено: 14 фев 2017, 03:33
Dragon-FAST
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;
    }
}

Можно и так)))