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

Переключение и подбор оружия одинаковой логикой

СообщениеДобавлено: 25 авг 2018, 19:55
NatanDreik
Наверное глупый вопрос, но я не могу разобраться. Есть два скрипта - один для подбора пушек, второй для их переключения. Как сообщать скрипту переключения, что оружия у игрока ещё нет?
Скрипт подбора оружия:
Синтаксис:
Используется csharp
 void OnTriggerStay(Collider cl)
    {
        if (cl.tag == "Player" && Input.GetKeyUp(KeyCode.F))
        {
           Gun.SetActive(true);
            Destroy(gameObject);
        }
    }

Скрипт переключения оружия:
Синтаксис:
Используется csharp

public class Weapon_Character : MonoBehaviour
{
   
    public GameObject Weapon1;
    public GameObject Weapon2;
    public GameObject Weapon3;

  void Update()
    {
if (Input.GetKeyDown(KeyCode.Alpha1))
        {
            Gun1.SetActive(true);
            Gun2.SetActive(false);
            Gun3.SetActive(false);
        }
и т.д.

Re: Переключение и подбор оружия одинаковой логикой

СообщениеДобавлено: 25 авг 2018, 20:08
Anonymyx
У вас не совсем верный подход к реализации задачи.
Если по нормальному, то тут вам нужен класс оружия и инвентарь с массивом подобранных оружий, типа вашего оружия. При подборе добавлять оружие в массив, а выбирать пушку по индексу в массиве.

Re: Переключение и подбор оружия одинаковой логикой

СообщениеДобавлено: 26 авг 2018, 10:21
NatanDreik
Anonymyx писал(а):Если по нормальному.

А если максимально просто? Примитивная возможность подбора оружия с дальнейшим переключением между собой. Я не очень понимаю, как реализовать это.

Re: Переключение и подбор оружия одинаковой логикой

СообщениеДобавлено: 27 авг 2018, 04:17
NatanDreik
Неужели сложно подсказать , как это реализовать. В интернете информации нет, везли либо про подбор, либо про переключение.

Re: Переключение и подбор оружия одинаковой логикой

СообщениеДобавлено: 27 авг 2018, 07:25
Rando_OM
В интернете все по отдельности, потому что все должно работать по отдельности. Вам написали выше,
Anonymyx писал(а):вам нужен класс оружия и инвентарь с массивом подобранных оружий, типа вашего оружия. При подборе добавлять оружие в массив, а выбирать пушку по индексу в массиве.

Re: Переключение и подбор оружия одинаковой логикой

СообщениеДобавлено: 27 авг 2018, 08:47
IDoNotExist
NatanDreik писал(а):Как сообщать скрипту переключения, что оружия у игрока ещё нет?

Сделай скрипт оружия, повесь на префабы оружия, каждому префабу впиши в скрипте уникальный ID (int переменной, тэгом, слоем). Перед подбором проходись по списку оружия в скрипте переключения ищи совпадение по ID, если совпадение есть, значит в скрипте есть такое оружие.

Re: Переключение и подбор оружия одинаковой логикой

СообщениеДобавлено: 27 авг 2018, 08:55
Bill Gates

Re: Переключение и подбор оружия одинаковой логикой

СообщениеДобавлено: 27 авг 2018, 12:05
NatanDreik
Bill Gates писал(а):Unity 5.6.3 https://ru.files.fm/u/4emwn535

Нереальное спасибо. Теперь я ещё в большем недоумении о дальнейших действиях, буду разбираться.

Re: Переключение и подбор оружия одинаковой логикой

СообщениеДобавлено: 28 авг 2018, 21:25
NeProUser
попробуй в скрипте переключения создать 7 публичных GameObject .
и одну типа int;

private int WhatWeapon;
public GameObject weapo1;
public GameObject weapo2;
public GameObject weapo3;
public GameObject EmptyWeapon;
public GameObject Weapon1;
public GameObject Weapon2;
public GameObject Weapon3;

в EmptyWeapon из них через инспектор кладём пустой объект.
в void Start пишем что :

weapo1 = EmtpyWeapon;
weapo2 = EmptyWeapon;
weapo3 = EmptyWeapon;

в Weapon1 кидаем первое оружие (на сцене через инспектор !оружие должно быть на сцене! * желательно у камеры игрока).
соответственно в Weapon2 и Weapon3 кидаем второе и третье оружие.

в Update пишем

if(Input.GetKeyDown (KeyCode.Какой угодно)){
if(WhatWeapon < 3){
WhatWeapon = WhatWeapon + 1;
}else{
WhatWeapon = 0;
}
}

if(WhatWeapon == 0){
weapo1.SetActive (true);
weapo2.SetActive (false);
weapo3.SetActive (false);
}
if(WhatWeapon == 1){
weapo1.SetActive (false);
weapo2.SetActive (false);
weapo3.SetActive (true);
}
if(WhatWeapon == 2){
weapo1.SetActive (false);
weapo2.SetActive (false);
weapo3.SetActive (true);
}



создаём скрипт подбора
в нём объявляем три публичных bool.

public bool W1;
public bool W2;
public bool W3;

затем в OnTriggerStay пишем. (void OnTriggerStay (Collider col))

if(col.tag == "Player"){
if(Input.GetKeyDown(KeyCode.E)){
if(W1 == true){
col.gameObject.GetComponent <скрипт переключения> ().weapo1 = Weapon1;
}
if(W2 == true){
col.gameObject.GetComponent <скрипт переключения> ().weapo2 = Weapon2;
}
if(W3 == true){
col.gameObject.GetComponent <скрипт переключения> ().weapo3 = Weapon3;
}
Destroy (gameObject, 1);
}
}



PS. предложенный мной способ несовершенен и может быть криво написан.

Re: Переключение и подбор оружия одинаковой логикой

СообщениеДобавлено: 29 авг 2018, 09:31
NatanDreik
NeProUser писал(а):PS. предложенный мной способ несовершенен и может быть криво написан.

Искреннее спасибо за попытку помочь. Не в обиду будет сказано, но этот скрипт похож на мертворожденного ребёнка.

Re: Переключение и подбор оружия одинаковой логикой

СообщениеДобавлено: 29 авг 2018, 16:19
Anonymyx
Так вы же хотели "максимально просто" :)

Re: Переключение и подбор оружия одинаковой логикой

СообщениеДобавлено: 10 сен 2018, 15:41
NatanDreik
Добрый день. Как здесь https://ru.files.fm/u/4emwn535 привязать к айтему модель, чтобы делать Instantiate? Автор вырезал комментарии и эту функцию, просит 1.5к рублей за помощь. Помогите, если не сложно, могу заплатить, но в пределах разумного.

Re: Переключение и подбор оружия одинаковой логикой

СообщениеДобавлено: 10 сен 2018, 17:11
IDoNotExist
NatanDreik писал(а):Добрый день. Как здесь https://ru.files.fm/u/4emwn535 привязать к айтему модель, чтобы делать Instantiate?

Ну так пропиши public GameObject model; внутри айтема и инстацируй его сколько душе угодно.

NatanDreik писал(а):Автор вырезал комментарии и эту функцию, просит 1.5к рублей за помощь.

Вот же сволочь, код написал, да еще и деньги за него требует.

Re: Переключение и подбор оружия одинаковой логикой

СообщениеДобавлено: 11 сен 2018, 10:56
Bill Gates
Ну охренеть, т.е. сначала эта сумма «Не вопрос», а теперь в «...в пределах разумного». И я не вырезал эту функцию. Я просто счел нужным ее туда не добавлять, потому что это лишь пример частичной реализации — база, а не готовый проект со всем функционалом.

Re: Переключение и подбор оружия одинаковой логикой

СообщениеДобавлено: 14 сен 2018, 04:41
NatanDreik
IDoNotExist писал(а):Ну так пропиши public GameObject model; внутри айтема и инстацируй его сколько душе угодно.

Ну, нужно же ещё как-то передавать в айтем этот обжект из BaseWeapon, а в BaseWeapon из скрипта, который висит на оружие на сцене, и неизвестно как инстацировать при такой запутанности.

IDoNotExist писал(а):Вот же сволочь, код написал, да еще и деньги за него требует.

За 30$ можно купить ассет со всеми скриптами и моделями, буквально готовую игру и с полной поддержкой.