Наш проект tower defence

Проекты в стадии разработки.

Re: Наш проект tower defence

Сообщение Vsquad studio 06 июл 2019, 13:04

действительно сложно разобратся
Vsquad studio
UNец
 
Сообщения: 34
Зарегистрирован: 28 май 2019, 11:10
  • Сайт

Re: Наш проект tower defence

Сообщение Vsquad studio 06 июл 2019, 13:47

Вообще слава Богу, удалось починить

Всё дело в том что в туторе парень пулю не вкладывал в башню. Она висела у него в префабе. lol

Поэтому когда скрипт спрашивал - if (!target) {Destroy(gameObject)} - -- у него пуля не удалялась, так как она только существует в префабе а не в сцене как у меня :))

А я пулю вложил в башню. Поэтому с первой же секунды, пока враг ещё не выбежал скрипт сносил мою пулю. И всё :) :D :D
Vsquad studio
UNец
 
Сообщения: 34
Зарегистрирован: 28 май 2019, 11:10
  • Сайт

Re: Наш проект tower defence

Сообщение Vsquad studio 06 июл 2019, 18:20

Вопрос, который не могу пока нагуглить

Хочу чтоб пуля продолжила лететь в место смерти врага. Запоминаю позицию в vector3

Но Юнити пишет что это не присвоено. В IF дебаг пишет последнюю позицию, а в ELSE пишет Vector3 не присвоен поэтому лети в ноль

void Update () {
if (target)
{


transform.LookAt(target);
transform.position = Vector3.MoveTowards(transform.position, target.position, Time.deltaTime * Speed);
Vector3 lastBulletPosition = target.transform.position; // здесь позиция норм
Debug.Log(lastBulletPosition);
}


else
{


Debug.Log(lastBulletPosition); // а здесь не присвоено уже
transform.position = Vector3.MoveTowards(transform.position, lastBulletPosition, Time.deltaTime * Speed);

}
Vsquad studio
UNец
 
Сообщения: 34
Зарегистрирован: 28 май 2019, 11:10
  • Сайт

Re: Наш проект tower defence

Сообщение 1max1 06 июл 2019, 18:29

Слышал что-то про локальную и глобальную зону видимости?
Ты когда в условии if (target) объявляешь переменную Vector3 lastBulletPosition, то она существует только в этом блоке { }, я не знаю как у тебя код вообще скомпилировался, потому что дальше ты к ней же обращаешься в другом блоке ><

Должно быть как-то так:
Синтаксис:
Используется csharp
    Vector3 lastBulletPosition; // выносим в глобальную область

    void Update()
    {
        if (target)
        {
            transform.LookAt(target);
            transform.position = Vector3.MoveTowards(transform.position, target.position, Time.deltaTime * Speed);
            lastBulletPosition = target.transform.position; // здесь позиция норм
        }
        else
            transform.position = Vector3.MoveTowards(transform.position, lastBulletPosition, Time.deltaTime * Speed);
    }
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Наш проект tower defence

Сообщение Vsquad studio 06 июл 2019, 18:37

Нет, не слышал, спасибо.

П.С, Сори что твой код прошлый не могу юзать, чтоб его понять мне надо месяц, а вдруг что то поправить. А тут я гипнотизируюсь уже 2 месяца, хоть что то понимаю
Vsquad studio
UNец
 
Сообщения: 34
Зарегистрирован: 28 май 2019, 11:10
  • Сайт

Re: Наш проект tower defence

Сообщение Vsquad studio 06 июл 2019, 18:38

А блин, я случайно уже сделал то что ты сказал. Всё равно не пашет!

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

Vector3 lastBulletPosition;
   
    public Tower twr;
    float i = 0.2f;
    // Use this for initialization

    // Update is called once per frame
    void Update () {
        if (target)
        {


            transform.LookAt(target);
            transform.position = Vector3.MoveTowards(transform.position, target.position, Time.deltaTime * Speed);
            Vector3 lastBulletPosition = target.transform.position;
            Debug.Log(lastBulletPosition);
        }


        else
        {


            Debug.Log(lastBulletPosition);
            transform.position = Vector3.MoveTowards(transform.position, lastBulletPosition, Time.deltaTime * Speed);

        }
Vsquad studio
UNец
 
Сообщения: 34
Зарегистрирован: 28 май 2019, 11:10
  • Сайт

Re: Наш проект tower defence

Сообщение Vsquad studio 06 июл 2019, 18:41

Изображение

Пишет

Assets/HM_tower_Vsquad/Scripts/bulletTower.cs(11,13): warning CS0649: Field `bulletTower.lastBulletPosition' is never assigned to, and will always have its default value
Vsquad studio
UNец
 
Сообщения: 34
Зарегистрирован: 28 май 2019, 11:10
  • Сайт

Re: Наш проект tower defence

Сообщение 1max1 06 июл 2019, 18:49

А блин, я случайно уже сделал то что ты сказал. Всё равно не пашет!

Ты сделал не то что я сказал(
Вот это:
Vector3 lastBulletPosition = target.transform.position;
Заменяем на это:
lastBulletPosition = target.transform.position;
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Наш проект tower defence

Сообщение Vsquad studio 06 июл 2019, 18:55

Получилось, спасибо!
Vsquad studio
UNец
 
Сообщения: 34
Зарегистрирован: 28 май 2019, 11:10
  • Сайт

Re: Наш проект tower defence

Сообщение AngryCat 06 июл 2019, 19:43

Мне кажется, что 1Max1 положен процент дохода с этой игры...
Здесь могла бы быть ваша реклама.
Аватара пользователя
AngryCat
Старожил
 
Сообщения: 716
Зарегистрирован: 20 июл 2018, 22:29
Skype: Дискорд - Флеш#4099

Re: Наш проект tower defence

Сообщение Vsquad studio 06 июл 2019, 21:16

Мы как раз продаём этот арт для программистов. Если вы сделаете игру - мы будем очень рады!
Vsquad studio
UNец
 
Сообщения: 34
Зарегистрирован: 28 май 2019, 11:10
  • Сайт

Re: Наш проект tower defence

Сообщение Vsquad studio 06 июл 2019, 22:57

Есть вопрос. Моя пуля вызывается с задержкой. Возникла ситуация когда враг УЖЕ пропал, а процесс команды на запуск уже запущен.

Гоблин пропал и через пол секунды возникает ядро и пропадает. Можно как то отменить запуск ( который с задржкой ) если вдруг гоблин пропал?

Синтаксис:
Используется javascript
IEnumerator shoot()
        {
                isShoot = true;
                yield return new WaitForSeconds(shootDelay);
                GameObject b = GameObject.Instantiate(bullet,shootElement.position,Quaternion.identity) as GameObject;
                b.GetComponent<bulletTower>().target = target;
        b.GetComponent<bulletTower>().twr = this;
        isShoot = false;
        }
Vsquad studio
UNец
 
Сообщения: 34
Зарегистрирован: 28 май 2019, 11:10
  • Сайт

Re: Наш проект tower defence

Сообщение AngryCat 06 июл 2019, 23:06

StopCoroutine (shoot());
Здесь могла бы быть ваша реклама.
Аватара пользователя
AngryCat
Старожил
 
Сообщения: 716
Зарегистрирован: 20 июл 2018, 22:29
Skype: Дискорд - Флеш#4099

Re: Наш проект tower defence

Сообщение Vsquad studio 06 июл 2019, 23:12

lol, я только что поставил условие случайно

if (target)
{
GameObject b = GameObject.Instantiate(bullet, shootElement.position, Quaternion.identity) as GameObject; }

срабатало, всё равно спасибо!
Vsquad studio
UNец
 
Сообщения: 34
Зарегистрирован: 28 май 2019, 11:10
  • Сайт

Re: Наш проект tower defence

Сообщение Vsquad studio 08 июл 2019, 08:54

Подскажите

Хочу чтоб башня поворачивала плавно назад в ноль когда враг пропал, но код ниже делает это супер резко. Quaternion и тем более все приставки к нему в виде Lerp это пока что сложно

Синтаксис:
Используется javascript
LookAtObj.transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.identity, Time.deltaTime);


Что я упустил?
Vsquad studio
UNец
 
Сообщения: 34
Зарегистрирован: 28 май 2019, 11:10
  • Сайт

Пред.След.

Вернуться в Кузня

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

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