Четверг, 02 Мая 2024, 08:56

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » character controller
character controller
kelodДата: Четверг, 28 Марта 2013, 19:01 | Сообщение # 1
был не раз
Сейчас нет на сайте
как эмитировать нажатие клавиш? т.е. на объект накинут контроллер, как его программно заставить двигаться?
KiraДата: Четверг, 28 Марта 2013, 19:39 | Сообщение # 2
заслуженный участник
Сейчас нет на сайте
Цитата (kelod)
как эмитировать нажатие клавиш? т.е. на объект накинут контроллер, как его программно заставить двигаться?

Скажем так решение через одно место.
Transform.Translate вам в помощь.


Unity3d разработчик на С#. Лучшее спасибо + в репу.
"Безумие: делать одно и то же снова и снова, и ждать при этом разных результатов".
"Человек, который никогда не ошибался никогда не пробовал ничего нового".
"Если человек может спокойно управлять автомобилем во время поцелуя красивой девушки, значит он уделяет поцелую недостаточно внимания”. Альберт Эйнштейн
kelodДата: Четверг, 28 Марта 2013, 19:52 | Сообщение # 3
был не раз
Сейчас нет на сайте
Цитата (Kira)
Скажем так решение через одно место.
Transform.Translate вам в помощь.

если бы ло бы всё так просто, я бы вопрос не задавал, у меня приходит команда от сервера идти вперёд, т.е. как будто другой игрок нажал кнопку и мне нужно чтобы бой бот двигался точно так же как при нажатии кнопки, с плавным ускорением и остановкой, вообщем всё как в стандартном контроллере
KiraДата: Четверг, 28 Марта 2013, 20:29 | Сообщение # 4
заслуженный участник
Сейчас нет на сайте
kelod, ну причем тут нажатие клавиш?
Не понимаю, писать сервер и не понимать простой сути.

Делаешь так:
Весь код который при нажатии вперед перемещаешь в функцию Forward();
И за место него вызываешь этот код.
Теперь при команде от сервера вперед, вызываешь туже самую функцию. Все элементарно.


Unity3d разработчик на С#. Лучшее спасибо + в репу.
"Безумие: делать одно и то же снова и снова, и ждать при этом разных результатов".
"Человек, который никогда не ошибался никогда не пробовал ничего нового".
"Если человек может спокойно управлять автомобилем во время поцелуя красивой девушки, значит он уделяет поцелую недостаточно внимания”. Альберт Эйнштейн
kelodДата: Четверг, 28 Марта 2013, 20:49 | Сообщение # 5
был не раз
Сейчас нет на сайте
Цитата (Kira)
kelod, ну причем тут нажатие клавиш?
Не понимаю, писать сервер и не понимать простой сути.

Делаешь так:
Весь код который при нажатии вперед перемещаешь в функцию Forward();
И за место него вызываешь этот код.
Теперь при команде от сервера вперед, вызываешь туже самую функцию. Все элементарно.

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

и нет у меня самописного кода, всё управляется стандартными контроллерами


Сообщение отредактировал kelod - Четверг, 28 Марта 2013, 20:50
KiraДата: Четверг, 28 Марта 2013, 21:09 | Сообщение # 6
заслуженный участник
Сейчас нет на сайте
Transform.Translate почему нет?
это все валяется в справке.
Код

function Update() {
     // Move the object forward along its z axis 1 unit/second.
     transform.Translate(Vector3.forward * Time.deltaTime);

     // Move the object upward in world space 1 unit/second.
     transform.Translate(Vector3.up * Time.deltaTime, Space.World);
}

Кабы работа с сетью подразумевает умелого человека.
Тогда мне просто не чем помочь.
Цитата (kelod)
ппц умные все такие, ну что же объясняю подробнее, раз на простой вопрос ответить не хотим

ответили же.
А плавное ускорение это уж сами, как минимум в контролере валяется. Что мешает скопипастить?


Unity3d разработчик на С#. Лучшее спасибо + в репу.
"Безумие: делать одно и то же снова и снова, и ждать при этом разных результатов".
"Человек, который никогда не ошибался никогда не пробовал ничего нового".
"Если человек может спокойно управлять автомобилем во время поцелуя красивой девушки, значит он уделяет поцелую недостаточно внимания”. Альберт Эйнштейн
kelodДата: Четверг, 28 Марта 2013, 21:14 | Сообщение # 7
был не раз
Сейчас нет на сайте
Цитата (Kira)
Transform.Translate почему нет?
это все валяется в справке.
Код

function Update() {
     // Move the object forward along its z axis 1 unit/second.
     transform.Translate(Vector3.forward * Time.deltaTime);

     // Move the object upward in world space 1 unit/second.
     transform.Translate(Vector3.up * Time.deltaTime, Space.World);
}

Кабы работа с сетью подразумевает умелого человека.
Тогда мне просто не чем помочь.
Цитата (kelod)
ппц умные все такие, ну что же объясняю подробнее, раз на простой вопрос ответить не хотим

ответили же.
А плавное ускорение это уж сами, как минимум в контролере валяется. Что мешает скопипастить?


во-первых тогда уж не Update а FixedUpdate, а во-вторых вы всегда пишите для одного и того же действия разные функции?? когда меня программированию учили в далёкие времена по ушам не один раз давали за копипаст
KiraДата: Четверг, 28 Марта 2013, 21:23 | Сообщение # 8
заслуженный участник
Сейчас нет на сайте
Цитата (kelod)
во-первых тогда уж не Update а FixedUpdate, а во-вторых вы всегда пишите для одного и того же действия разные функции?? когда меня программированию учили в далёкие времена по ушам не один раз давали за копипаст

Это взято со справки, вам видите ли не вдомек почитать.
Ну так чего же тогда не получается, боитесь посмотреть как там сделано?(а как же больше читайте чужой код, вам такого не говорили?)

Добавлено (28.03.2013, 21:23)
---------------------------------------------
ЗЫ: выше в этой ветке, есть уроки. Там наверняка более практичное решение есть.


Unity3d разработчик на С#. Лучшее спасибо + в репу.
"Безумие: делать одно и то же снова и снова, и ждать при этом разных результатов".
"Человек, который никогда не ошибался никогда не пробовал ничего нового".
"Если человек может спокойно управлять автомобилем во время поцелуя красивой девушки, значит он уделяет поцелую недостаточно внимания”. Альберт Эйнштейн
ЛевшаДата: Пятница, 29 Марта 2013, 00:56 | Сообщение # 9
почти ветеран
Сейчас нет на сайте
Цитата (kelod)
а объект накинут контроллер

Какой контроллер ?
Цитата (kelod)
всё управляется стандартными контроллерами

Они написаны под сингл, зачем их переделывать, когда проще для серверного управления с нуля сразу написать....


X.cor.R (Prologue)

Сообщение отредактировал Левша - Пятница, 29 Марта 2013, 00:57
kelodДата: Пятница, 29 Марта 2013, 12:02 | Сообщение # 10
был не раз
Сейчас нет на сайте
Цитата (Левша)
Цитата (kelod)
а объект накинут контроллер

Какой контроллер ?
Цитата (kelod)
всё управляется стандартными контроллерами

Они написаны под сингл, зачем их переделывать, когда проще для серверного управления с нуля сразу написать....

контроллер любой например CharacterController или CharacterMotor
свой писать это тоже не вариант, там же много всяких плюшек, плавное движение и остановка, скольжение и много много чего, неужеле очень сложно передать контроллеру команду управления?
ЛевшаДата: Пятница, 29 Марта 2013, 12:27 | Сообщение # 11
почти ветеран
Сейчас нет на сайте
Цитата (kelod)
неужеле очень сложно передать контроллеру команду управления?

Написать то не сложно... потом возникнет проблема с интерполяцией движения и тд...
Надо себе четко представлять что сингл контроллеры и контроллеры для мультиплеера это абсолютно разная архитектура и подход.
smile


X.cor.R (Prologue)

Сообщение отредактировал Левша - Пятница, 29 Марта 2013, 12:27
kelodДата: Пятница, 29 Марта 2013, 12:59 | Сообщение # 12
был не раз
Сейчас нет на сайте
Цитата (Левша)
Написать то не сложно... потом возникнет проблема с интерполяцией движения и тд...
Надо себе четко представлять что сингл контроллеры и контроллеры для мультиплеера это абсолютно разная архитектура и подход.

подскажите где можно про контроллеры для мультиплеера почитать?? желательно на русском и с примерами
интерполяция это конечно проблема, но если будут небольшие скачки, это на данном этапе для меня не очень страшно, я в любом случае понимаю что в последствии много переделывать нужно будет
KiraДата: Пятница, 29 Марта 2013, 16:34 | Сообщение # 13
заслуженный участник
Сейчас нет на сайте
kelod, интересный сайт
Там внизу меню есть. Правда флеш, но не суть.


Unity3d разработчик на С#. Лучшее спасибо + в репу.
"Безумие: делать одно и то же снова и снова, и ждать при этом разных результатов".
"Человек, который никогда не ошибался никогда не пробовал ничего нового".
"Если человек может спокойно управлять автомобилем во время поцелуя красивой девушки, значит он уделяет поцелую недостаточно внимания”. Альберт Эйнштейн


Сообщение отредактировал Kira - Пятница, 29 Марта 2013, 16:38
kelodДата: Пятница, 29 Марта 2013, 17:32 | Сообщение # 14
был не раз
Сейчас нет на сайте
Цитата (Kira)
kelod, интересный сайт
Там внизу меню есть. Правда флеш, но не суть.

спасибо, про интерполяцию и синхронизацию действительно интересно и полезно, вот только про контроллер я там ничего не нашёл((
Fr0sTДата: Воскресенье, 31 Марта 2013, 17:15 | Сообщение # 15
постоянный участник
Сейчас нет на сайте
Объяви контроллер CharacterController controller = GetComponent<CharacterController>();
и двигай его либо controller.move(); или controller.SimpleMove() - тут гравитация автоматически добавится.




Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » character controller
  • Страница 1 из 1
  • 1
Поиск:

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