Вопрос-[ответ] по Unity
|
|
QWER56 | Дата: Понедельник, 09 Августа 2010, 10:58 | Сообщение # 1 |
старожил
Сейчас нет на сайте
| Вопрос-[Ответ] по Unity3d
База скриптов Unity3d Курс Уроков по Unity 3D от Alcatraz
ConsMark - поисковик по интернет магазинам.
Сообщение отредактировал QWER56 - Вторник, 26 Июля 2011, 20:54 |
|
| |
BrightSpot | Дата: Понедельник, 30 Апреля 2018, 01:02 | Сообщение # 8521 |
заслуженный участник
Сейчас нет на сайте
| Код void Update() { Vector3 delta = player.position - transform.position; delta.Normalize(); float moveSpeed = speed * Time.deltaTime; transform.position = transform.position + (delta * moveSpeed); } Вот так замени, по простому:
Код Vector3 deltaж void Update() { if(player != null)//если игрок "умерает" через Destroy { delta = player.position - transform.position; delta.Normalize(); } float moveSpeed = speed * Time.deltaTime; transform.position = transform.position + (delta * moveSpeed); }
Более мощный компьютер глючит быстрее и точнее.
|
|
| |
alex9999 | Дата: Понедельник, 30 Апреля 2018, 20:56 | Сообщение # 8522 |
был не раз
Сейчас нет на сайте
| Цитата BrightSpot ( ) Вот так замени, по простому: Cпасибо, все работает, но вылезла другая проблема , если игрок уничтожен до спавна 10 врага юнити дает такое: NullReferenceException: Object reference not set to an instance of an object MoveTowardsPlayer.Start () (at Assets/scripts/MoveTowardsPlayer.cs:17)
подскажите пожалуйста как решить
Unity the best
Сообщение отредактировал alex9999 - Понедельник, 30 Апреля 2018, 22:38 |
|
| |
BrightSpot | Дата: Вторник, 01 Мая 2018, 00:34 | Сообщение # 8523 |
заслуженный участник
Сейчас нет на сайте
| Цитата alex9999 ( ) но вылезла другая проблема , если игрок уничтожен до спавна 10 врага юнити дает такое: для начала определись в какой теме задавать вопросы=)) А так вставь посмотри к какому объекту обращается код на 17 строке в MoveTowardsPlayer и при необходимости вставь проверку... хотя на вскидку можно предположить, что ругает неопределенную delta... попробуй
Код if(player != null)//если игрок "умерает" через Destroy { delta = player.position - transform.position; delta.Normalize(); } заменить на
Код if(player != null)//если игрок "умерает" через Destroy { delta = player.position - transform.position; delta.Normalize(); } else { delta = transform.position; } и подучи базу, пожалуйста - хоть какую то книженку по с# и справку по unity...
Более мощный компьютер глючит быстрее и точнее.
|
|
| |
drcrack | Дата: Вторник, 01 Мая 2018, 00:45 | Сообщение # 8524 |
старожил
Сейчас нет на сайте
| Цитата хотя на вскидку можно предположить, что ругает неопределенную delta... Vector3 это структура, value type, ее использование никак не может вызвать NullReferenceException Ошибка скорее всего в Start:
Цитата player = GameObject.Find("playerShip").transform; GameObject.Find("playerShip") возвращает null при мертвом игроке, надо добавить проверку.
Сообщение отредактировал drcrack - Среда, 02 Мая 2018, 08:34 |
|
| |
alex9999 | Дата: Вторник, 01 Мая 2018, 21:08 | Сообщение # 8525 |
был не раз
Сейчас нет на сайте
| Цитата drcrack ( ) player = GameObject.Find("playerShip").transform; вы правы visual studio ругается на эту строчку: player = GameObject.Find("playerShip").transform;
как поставить проверку, не подскажете?Цитата BrightSpot ( ) попробуй Код if(player != null)//если игрок "умерает" через Destroy { delta = player.position - transform.position; delta.Normalize(); }
заменить на Код if(player != null)//если игрок "умерает" через Destroy { delta = player.position - transform.position; delta.Normalize(); } else { delta = transform.position; } к сожалению не сработало, базу обещаю подучить))
Unity the best
|
|
| |
drcrack | Дата: Среда, 02 Мая 2018, 06:35 | Сообщение # 8526 |
старожил
Сейчас нет на сайте
| Цитата как поставить проверку, не подскажете?
Код var ship = GameObject.Find("playerShip"); if(ship != null) player = ship.transform;
|
|
| |
alex9999 | Дата: Среда, 02 Мая 2018, 21:13 | Сообщение # 8527 |
был не раз
Сейчас нет на сайте
| Цитата drcrack ( ) var ship = GameObject.Find("playerShip"); if(ship != null) player = ship.transform; Спасибо, ошибки ушли.
Unity the best
|
|
| |
STRATEG766 | Дата: Вторник, 08 Мая 2018, 01:14 | Сообщение # 8528 |
частый гость
Сейчас нет на сайте
| В Update добавил вот этот код для прозрачности Код img.color = new Color (0.28f, 0.5f, 0.78f, t-=0.2f*Time.deltaTime); Почему-то прозрачность происходит только после второго запуска игры, и то сразу же за 1 сек , хотя там стоит 0.2f. Не знаете почему в Update не работает этот код?
Сообщение отредактировал STRATEG766 - Вторник, 08 Мая 2018, 01:16 |
|
| |
drcrack | Дата: Вторник, 08 Мая 2018, 03:03 | Сообщение # 8529 |
старожил
Сейчас нет на сайте
| А что такоe t?
|
|
| |
DeveloperGame | Дата: Вторник, 08 Мая 2018, 15:24 | Сообщение # 8530 |
частый гость
Сейчас нет на сайте
| Я на одном сайте видел 3d игру и с начало подумал, что это flash игра. Пока на экране не появился логотип unity и прогресс бар. Flash уже пару лет как устарела, и нужно переходить на другой движок и я решил поэкспериментировать с unity. Кто-нибудь знает как на нём делать игры для сайтов?
Developer online game
|
|
| |
drcrack | Дата: Вторник, 08 Мая 2018, 15:33 | Сообщение # 8531 |
старожил
Сейчас нет на сайте
| Цитата Кто-нибудь знает как на нём делать игры для сайтов? https://docs.unity3d.com/Manual/webgl-building.html
|
|
| |
STRATEG766 | Дата: Вторник, 08 Мая 2018, 17:35 | Сообщение # 8532 |
частый гость
Сейчас нет на сайте
| Цитата drcrack ( ) А что такоe t? Переменная, которая в начале равна 1. Чтобы за 5 секунд картинка стала прозрачной , добавил ее в Update. Но почему-то на картинку она не действует. Или у меня код неправильный для прозрачности Код img.color = new Color (0.28f, 0.5f, 0.78f, t-=0.2f*Time.deltaTime);
|
|
| |
drcrack | Дата: Вторник, 08 Мая 2018, 18:02 | Сообщение # 8533 |
старожил
Сейчас нет на сайте
| Цитата Переменная, которая в начале равна 1. Переменная или все-таки поле класса? Код целиком бы увидеть) Потому что в этой строке ошибок вроде нет, должно работать PS Хотя -= я бы вынес на отдельную строчку, как-то непривычно оно смотрится среди аргументов
Сообщение отредактировал drcrack - Вторник, 08 Мая 2018, 18:05 |
|
| |
STRATEG766 | Дата: Вторник, 08 Мая 2018, 18:05 | Сообщение # 8534 |
частый гость
Сейчас нет на сайте
| И еще вопрос. Вот я на снаряда повесил физ.материал, чтобы был рикошет от столкновении. И вот от рикошета скорость меняется и дальше летит медленнее. Решил это поменяв "Bounce Combine" физ.материала "Average" на "Maximum" , но от этого меняется угол рикошета. Как можно еще решить это кроме такого способа?
Сообщение отредактировал STRATEG766 - Вторник, 08 Мая 2018, 18:06 |
|
| |
drcrack | Дата: Вторник, 08 Мая 2018, 18:07 | Сообщение # 8535 |
старожил
Сейчас нет на сайте
| Цитата Как можно еще решить это кроме такого способа? конечно, никто не мешает в своем обработчике столкновения изменить траекторию как тебе нужно
|
|
| |
STRATEG766 | Дата: Вторник, 08 Мая 2018, 18:35 | Сообщение # 8536 |
частый гость
Сейчас нет на сайте
| Цитата drcrack ( ) Код целиком бы увидеть) Да я там тупил, пытался сделать прозрачн. самого префаба. XD
Цитата public Canvas mGUI; public Image benzBar; Image ShowBenzBar; void Start () { ShowBenzBar = (Image)Instantiate (benzBar); ShowBenzBar.transform.SetParent (myGUI.transform,true); }
У меня этот скрипт висит на 4 объекта, чтобы в начале для каждого создавалась по 1 image. Не знаю, как теперь из Canvas'a получить эти image и сделать прозрачными
Добавлено (08 Мая 2018, 18:35) ---------------------------------------------
Цитата drcrack ( ) в своем обработчике столкновения изменить траекторию как тебе нужно Понял. Просто от кода хотел отказаться, думал может в Инспекторе это можно сделать
Сообщение отредактировал STRATEG766 - Вторник, 08 Мая 2018, 18:35 |
|
| |
sim22x | Дата: Вторник, 08 Мая 2018, 21:16 | Сообщение # 8537 |
был не раз
Сейчас нет на сайте
| Можно ли сбилдить игру таким образом, что бы игроки потом могли её свободно модифицировать?
|
|
| |
InsaneSystems | Дата: Вторник, 08 Мая 2018, 21:34 | Сообщение # 8538 |
участник
Сейчас нет на сайте
| sim22x, смотря какого рода модификации нужны. Чтобы смогли открыть в Unity - нет, нужны обычные исходики. Редактировать/добавлять текстуры, модели и так далее - смотрите в сторону Streaming Assets.
Сообщение отредактировал InsaneSystems - Вторник, 08 Мая 2018, 21:34 |
|
| |
alex9999 | Дата: Среда, 09 Мая 2018, 20:55 | Сообщение # 8539 |
был не раз
Сейчас нет на сайте
| Всем привет, подскажите пожалуйста, что нужно выставить в настройках проекта(юнити2017) чтобы пропорции экрана сохранялись для всех разрешений и соотношений сторон(16:9, 4:3, 16:10 и тд и тп)? Если это в принципе возможно))
Unity the best
|
|
| |
STRATEG766 | Дата: Среда, 09 Мая 2018, 23:58 | Сообщение # 8540 |
частый гость
Сейчас нет на сайте
| Есть у меня префаб "полоска здоровья". 2 UI images. Первая просто белый фон, вторая сама полоска здоровья (красная). Как мне можно получить вторую картинку префаба и менять только ее размер? Если бы была только одна, написал бы вот так. Написал вот так Цитата public Image img; img.transform.localScale = new Vector2 (...);
Не знаю как получить вторую из префаба
|
|
| |