Страница 3 из 4
Re: Наш проект tower defence
Добавлено:
06 июл 2019, 13:04
Vsquad studio
действительно сложно разобратся
Re: Наш проект tower defence
Добавлено:
06 июл 2019, 13:47
Vsquad studio
Вообще слава Богу, удалось починитьВсё дело в том что в туторе парень пулю не вкладывал в башню. Она висела у него в префабе. lol
Поэтому когда скрипт спрашивал - if (!target) {Destroy(gameObject)} - -- у него пуля не удалялась, так как она только существует в префабе а не в сцене как у меня
А я пулю вложил в башню. Поэтому с первой же секунды, пока враг ещё не выбежал скрипт сносил мою пулю. И всё
Re: Наш проект tower defence
Добавлено:
06 июл 2019, 18:20
Vsquad studio
Вопрос, который не могу пока нагуглить
Хочу чтоб пуля продолжила лететь в место смерти врага. Запоминаю позицию в 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);
}
Re: Наш проект tower defence
Добавлено:
06 июл 2019, 18:29
1max1
Слышал что-то про локальную и глобальную зону видимости?
Ты когда в условии 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);
}
Re: Наш проект tower defence
Добавлено:
06 июл 2019, 18:37
Vsquad studio
Нет, не слышал, спасибо.
П.С, Сори что твой код прошлый не могу юзать, чтоб его понять мне надо месяц, а вдруг что то поправить. А тут я гипнотизируюсь уже 2 месяца, хоть что то понимаю
Re: Наш проект tower defence
Добавлено:
06 июл 2019, 18:38
Vsquad studio
А блин, я случайно уже сделал то что ты сказал. Всё равно не пашет!
Используется 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);
}
Re: Наш проект tower defence
Добавлено:
06 июл 2019, 18:41
Vsquad studio
Пишет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
Re: Наш проект tower defence
Добавлено:
06 июл 2019, 18:49
1max1
А блин, я случайно уже сделал то что ты сказал. Всё равно не пашет!
Ты сделал не то что я сказал(
Вот это:
Vector3 lastBulletPosition = target.transform.position;
Заменяем на это:
lastBulletPosition = target.transform.position;
Re: Наш проект tower defence
Добавлено:
06 июл 2019, 18:55
Vsquad studio
Получилось, спасибо!
Re: Наш проект tower defence
Добавлено:
06 июл 2019, 19:43
AngryCat
Мне кажется, что 1Max1 положен процент дохода с этой игры...
Re: Наш проект tower defence
Добавлено:
06 июл 2019, 21:16
Vsquad studio
Мы как раз продаём этот арт для программистов. Если вы сделаете игру - мы будем очень рады!
Re: Наш проект tower defence
Добавлено:
06 июл 2019, 22:57
Vsquad studio
Есть вопрос. Моя пуля вызывается с задержкой. Возникла ситуация когда враг УЖЕ пропал, а процесс команды на запуск уже запущен.
Гоблин пропал и через пол секунды возникает ядро и пропадает. Можно как то отменить запуск ( который с задржкой ) если вдруг гоблин пропал?
Используется 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;
}
Re: Наш проект tower defence
Добавлено:
06 июл 2019, 23:06
AngryCat
StopCoroutine (shoot());
Re: Наш проект tower defence
Добавлено:
06 июл 2019, 23:12
Vsquad studio
lol, я только что поставил условие случайно
if (target)
{
GameObject b = GameObject.Instantiate(bullet, shootElement.position, Quaternion.identity) as GameObject; }
срабатало, всё равно спасибо!
Re: Наш проект tower defence
Добавлено:
08 июл 2019, 08:54
Vsquad studio
Подскажите
Хочу чтоб башня поворачивала
плавно назад в ноль когда враг пропал, но код ниже делает это супер резко. Quaternion и тем более все приставки к нему в виде Lerp это пока что сложно
Используется javascript
LookAtObj.transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.identity, Time.deltaTime);
Что я упустил?