Четверг, 19 Декабря 2024, 04:54

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Строительство в FPS(шутер от первого лица)
WorlfДата: Понедельник, 15 Октября 2012, 22:19 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Мне нужна помощь:
При нажатии на кнопку "b" открывается меню GUI,при нажатии на следующую кнопку(например ферма) объект вешался на мышь,после клика он строился.
Помогите пожалуйста,более менее понимаю,но все же прошу помощи у более умных людей.
lapendownДата: Вторник, 16 Октября 2012, 00:12 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
Опиши подробнее, что надо?
Knight1032Дата: Вторник, 16 Октября 2012, 00:51 | Сообщение # 3
заслуженный участник
Сейчас нет на сайте
тебе скрипт нужен?

Да, я программист, дизайнер, сценарист,
Я сам себе издатель и сам себе игрок...
IIyxMASTERДата: Вторник, 16 Октября 2012, 11:01 | Сообщение # 4
постоянный участник
Сейчас нет на сайте
Начинаешь выполнять все по очереди.там ничего сложного. Почти все есть в примерах.
andarkyДата: Вторник, 16 Октября 2012, 11:04 | Сообщение # 5
старожил
Сейчас нет на сайте
самое сложное в этом - перевести координаты мышки с экрана на 3d поверхность...
остальное всё просто



Моя страничка по дизайну
GameDev//Design//3D
Ютубчик
WorlfДата: Вторник, 16 Октября 2012, 14:50 | Сообщение # 6
почетный гость
Сейчас нет на сайте
Quote (lapendown)
Опиши подробнее, что надо?

Что бы объект прицеплялся к координатам мыши после клика запоминал координаты и остался на них.
Quote (Knight1032)
тебе скрипт нужен?

Да именно.
Quote (andarky)
самое сложное в этом - перевести координаты мышки с экрана на 3d поверхность...
остальное всё просто

В этом и есть загвоздка.
UndeadДата: Вторник, 16 Октября 2012, 15:08 | Сообщение # 7
NeoAxis User
Сейчас нет на сайте
Quote (andarky)
самое сложное в этом - перевести координаты мышки с экрана на 3d поверхность...

Это самое простое. Пускаешь лучь из центра экрана и получаешь данные о пересечении объектов(универсально для всех двигов).
Не знаю, как в юньке, но в NeoAxis 4 строчки кода.


Вcем зла.

Сообщение отредактировал Undead - Вторник, 16 Октября 2012, 15:11
WorlfДата: Вторник, 16 Октября 2012, 15:31 | Сообщение # 8
почетный гость
Сейчас нет на сайте
Quote (Undead)
Пускаешь лучь из центра экрана и получаешь данные о пересечении объектов(универсально для всех двигов)

Ох это мне о многом говорит,если бы я знал как "пустить" тот самый "лучь" наверное не спрашивал бы. dry
andarkyДата: Вторник, 16 Октября 2012, 15:33 | Сообщение # 9
старожил
Сейчас нет на сайте
Undead,
в UNITY также, но есть и свои методы.
Но я так и не смог с этим разобраться...

пришлось по поверхность земли заполнить все невидимыми плоскостями которые и реагировали на то когда мышь на нем.
у меня на ГУЮ была кнопка которая включала режим установки,
глобальная функция включала всем этим активным квадратикам COLLIDER и тогда уже можно было тыкнув по определенному месту
поставить туда выбранный заранее объект...

но всё это хорошо работает только на ПЛОСКИХ поверхностях.
Если какой-то TERRAIN то уже не подходит мой метод :(



Моя страничка по дизайну
GameDev//Design//3D
Ютубчик
WorlfДата: Вторник, 16 Октября 2012, 15:48 | Сообщение # 10
почетный гость
Сейчас нет на сайте
andarky,
Если же попытаться сделать платформу перед игроком,после нажатия которой здание брало его координаты,реально на csharp написать?
Но координаты не менялись бы после клика мыши,иначе здания будут ходить за персонажем.


Сообщение отредактировал Worlf - Вторник, 16 Октября 2012, 15:55
andarkyДата: Вторник, 16 Октября 2012, 15:59 | Сообщение # 11
старожил
Сейчас нет на сайте
Worlf,
я всё на JS писал,
не понимаю C#...

Quote (Worlf)
здания будут ходить за персонажем.

а зачем ты их к персу привязал?
сделай им PARENT={земля}



Моя страничка по дизайну
GameDev//Design//3D
Ютубчик


Сообщение отредактировал andarky - Вторник, 16 Октября 2012, 16:00
WorlfДата: Вторник, 16 Октября 2012, 16:29 | Сообщение # 12
почетный гость
Сейчас нет на сайте
Quote (andarky)
а зачем ты их к персу привязал?
сделай им PARENT={земля}

Простите не скажите подробнее как так сделать?Я привязал к персу платформу которая указывает координаты для постройки,вроде норм,но как сделать чтобы платформа не проходила сквозь землю,а находилась поверх её?(заранее говорю что земля у меня terrain)
andarkyДата: Вторник, 16 Октября 2012, 16:35 | Сообщение # 13
старожил
Сейчас нет на сайте
Worlf,
я уже выше писал что для TERRAIN надо что-то другое...
как вариант - можно растровую карту высот использовать - чем темнее пиксель - тем ниже высота.

Я так делал, но всё-равно были неточности



Моя страничка по дизайну
GameDev//Design//3D
Ютубчик
WorlfДата: Вторник, 16 Октября 2012, 16:39 | Сообщение # 14
почетный гость
Сейчас нет на сайте
andarky,
Спасибо за помощь.Что-нибудь придумаю)
UndeadДата: Вторник, 16 Октября 2012, 16:40 | Сообщение # 15
NeoAxis User
Сейчас нет на сайте
Нашёл справку по API, в юньке тоже всё просто.
Ray
RaycastHit
Из RaycastHit можно получить положение в пространстве, нормаль поверхности, расстояние до точки пересечения, ну и прочие полезности.

В твоём слечае нужно делать лучом, иначе ничего не выйдет.
Quote (andarky)
пришлось по поверхность земли заполнить все невидимыми плоскостями

Без обид, но это тот ещё дибилизм.


Вcем зла.
andarkyДата: Вторник, 16 Октября 2012, 16:44 | Сообщение # 16
старожил
Сейчас нет на сайте
как вариант - по координатам текстуры,
если ловить текстурой координаты с мыши - потом пересчитывать их как-то.
В Bitz3d так я делал.

В УНИТИ скорее всего такая функция тоже обязательно присутствует.
Погугли по темам дырок на стенах от выстрелов



Моя страничка по дизайну
GameDev//Design//3D
Ютубчик
UndeadДата: Вторник, 16 Октября 2012, 17:00 | Сообщение # 17
NeoAxis User
Сейчас нет на сайте
andarky,
Quote (andarky)
как вариант - по координатам текстуры, если ловить текстурой координаты с мыши - потом пересчитывать их как-то. В Bitz3d так я делал.

Это всё лучом делается, сходи по второй ссылке, всё поймёшь.

Добавлено (16.10.2012, 17:00)
---------------------------------------------
Worlf, Я нашёл тутор по пусканию луча в юньке
Physics.Raycast


Вcем зла.

Сообщение отредактировал Undead - Вторник, 16 Октября 2012, 17:01
WorlfДата: Вторник, 16 Октября 2012, 18:23 | Сообщение # 18
почетный гость
Сейчас нет на сайте
Undead,
проблема в том что не умею я этим лучом пользоваться,не понимаю я не слова(не по русски не по английски) про этот луч.
UndeadДата: Вторник, 16 Октября 2012, 18:51 | Сообщение # 19
NeoAxis User
Сейчас нет на сайте
Worlf, А что сложного то?
Обяви переменную типа RaycastHit.
Code
RaycastHit Result;

Затем пускаешь лучь из центра экрана
Code
Physics.Raycast(Camera.main.ScreenPointToRay (Input.mousePosition), out Result, 200);

Последний параметр - расстояние, на которое лучь пускать.
Теперь в Result есть все необходимые тебе данные.



Вcем зла.
sinoptisДата: Среда, 17 Октября 2012, 22:01 | Сообщение # 20
почетный гость
Сейчас нет на сайте
В общем не буду писать тебе весь код, потому что будет лучше если ты сам додумаешься, тем более я точно не знаю для каких целей тебе это. Я делал так:
Code

RaycastHit hit;
if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit, 1000)){
   building.transform.position = hit.point;
}
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг