Вторник, 16 Апреля 2024, 13:08

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Форум игроделов » Записи участника » Artaniel [48]
Результаты поиска
ArtanielДата: Четверг, 14 Августа 2014, 18:59 | Сообщение # 41 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Цитата Nitro ()
а в редакторе string My Name не появляется...

Nitro, а в переменной myName чтото есть?
По логике, ее значение должно задаваться в инспекторе объектов, т.е. не в скрипте, а в редакторе юнити сцены. При выделении объекта в инспекторе будет строка для ввода соответствующая myName.
Если туда ничего не писали, то в консоль выведет пустое значение, т.е. ничего.

Перечитал вопрос и понял что не понял его.

Проверь совпадает ли название файла скрипта с названием класса (MainPlayer).
Проверь сохранен ли скрипт.
Возможно поможет сбилдить его. Обычно слева панелька с всякими C#Asembly, правой кнопкой на них, build.


Сообщение отредактировал Artaniel - Четверг, 14 Августа 2014, 19:17
ArtanielДата: Четверг, 14 Августа 2014, 17:50 | Сообщение # 42 | Тема: True gravity
частый гость
Сейчас нет на сайте
Цитата zisX ()
И ещё небольшой вопрос, почему крутится земля?
Погуглив я понял что на это повлияло солнце, т.е. солнце тоже должно вращаться, а почему солнцу вращается?
И так далее до бесконечности.


Причина в процессе формирования планеты. После того как появилось Солнце, та часть вещества, которая потом стала Землей представляла из себя пояс газов, пыли и астероидов. Вращались они независимо друг от друга по обычным орбитам. По законам Кеплера, чем ниже орбита, тем быстрее скорость. Когда весь этот пояс начал налипать друг на друга, та его часть что налипала ниже, какбы догоняла сзади, а та часть что налипала выше какбы отставала и давила назад. Нижний слой давит вперед в направлении движения планеты, верхний назад. И тот и тот закручивают ее в одном направлении с разных сторон.
Ну а в последствии, все это не могло потерять вращательной скорости, т.к. просто не обо что. Есть там сложная результирующая приливных сил, которая замедляет такое вращение, но она слишком слабая, за 4 миллиарда лет не смогла остановить.


Сообщение отредактировал Artaniel - Четверг, 14 Августа 2014, 18:01
ArtanielДата: Четверг, 14 Августа 2014, 04:07 | Сообщение # 43 | Тема: True gravity
частый гость
Сейчас нет на сайте
На сколько я помню школьный курс физики, сила тяжести в таком случае будет:

F = G*m1*m2 / (r*r)
G - глобальная константа, подобрать исходя из игровой динамики.
m1 и m2 - массы взаимодействующих тел
r - расстояние между центрами масс

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

Я бы просто периодически обходил все действующие тела,
перебирал для каждого все тела с которыми он взаимодействует,
находил силы взаимодействия по этой формуле,
превращал их в вектора (умножал на единичный вектор в направлении того с кем взаимодействуем),
складывал все такие векторные силы как вектора (в юнити элементарно, в флеше надо попотеть с самодельной векторной алгеброй, где вы работаете не знаю),
ну и применял эту суммарную результирующую силу к текущему телу (опять таки одна команда для юнити, много секасу с кинематикой для флеша).
ArtanielДата: Вторник, 12 Августа 2014, 22:11 | Сообщение # 44 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Adom, мои скромные навыки телепатии и ясновидения подсказывают мне что ты ее вызываешь в Update(), т.е. каждый фрейм, т.е. около 60 раз в секунду. Чтобы вращалось пореже надо вызывать эту строку пореже. Например через таймер.

Код

float myTimer;
public float pause = 1; //1 сек, изменить если нужна другая пауза

void Update(){
    myTimer += Time.deltaTime;
    if (myTimer > pause ){
      myTimer -= pause;
      transform.rotation=Random.rotation;
    }
}


Вращения будут мгновенными, но через паузу (1 сек если не менять). Если нужно плавнее, читай про Lerp, попробуй его вначале на простых перемещениях, потом приладь к вращениям.
Гдето так:
Код

float myTimer;
public float pause = 1; //1 сек, изменить если нужна другая пауза
Quaternion LastRotation;
Quaternion NewRotation;

void Update(){
    myTimer += Time.deltaTime;
    if (myTimer > pause ){
      myTimer -= pause;
      LastRotation = NewRotation;
      NewRotation=Random.rotation;
    }
    transform.rotation = Quaternion.Lerp(LastRotation, NewRotation, myTimer/pause);
}


Сообщение отредактировал Artaniel - Вторник, 12 Августа 2014, 22:20
ArtanielДата: Суббота, 02 Августа 2014, 15:33 | Сообщение # 45 | Тема: Недоделанный диздок
частый гость
Сейчас нет на сайте
Угу-угу, спасибо, конструктивно, записываю.
Обращение скорее к исполнителю, чем инвестору. Хотя пожалуй написано слишком для себя. Учту.
Базовая идея не раскрыта, одного предложения мало, понял.
ArtanielДата: Суббота, 02 Августа 2014, 13:46 | Сообщение # 46 | Тема: Недоделанный диздок
частый гость
Сейчас нет на сайте
Доброго времени суток, комьюнити. Я молодой и начинающий кодер с претензиями на геймдизайнера. Сейчас учусь писать геймдиз документацию. Вот, собственно, в процессе тренировок родилось такое. Не воспринимайте это слишком серьезно, работать по этому диздоку никто не будет, да и не доведен он до конца. Но может кому будет полезно, может кого улыбнёт.
И, да, букав под спойлером много, кого это пугает лучше и не начинайте.


Какого фидбека я жду:
1. Дочитал / не осилил.
2. Если бы вы были кодером, за что бы вы материли такого геймдизайнера? Слишком дотошно или слишком схематично? Может стоит как то иначе структурировать?
Просьба не слишком смотреть на арфаграфею и, пунктуяцыю. Они хромают, да.
ArtanielДата: Суббота, 02 Августа 2014, 02:38 | Сообщение # 47 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
allods, осмелюсь предположить что Random.Range() возвращает дробное число. Оно не может быть индексом в массиве. Проблему может решить приведение к int, т.е. например
Код
anim.Play (animAttacks[(int)atRand]);

Если бы в показанном участке кода было бы видно где это atRand объявлено, возможно было бы проще о нем говорить.

Если не сработает, посмотри вообще принимает ли Animation.Play() объекты типа AnimationClip.


Сообщение отредактировал Artaniel - Суббота, 02 Августа 2014, 02:51
ArtanielДата: Вторник, 22 Июля 2014, 20:47 | Сообщение # 48 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Цитата Vip_and_Rip ()
Клонируется персонаж при загрузке предыдущего уровня.
Перехожу на новую сцену, потом возвращаюсь к старой - и на карте два персонажа. Как решить?
Пользовался стандартным скриптом через Application.LoadLevel, и DontDestroy.

Забавно, если перейти на следующую локацию, то будет уже три игрока, четыре, и так далее...


Могу посоветовать два приема. Первый:
Создаем нулевую сцену. В нее закладываем все объекты которые должны быть уникальными, но и быть во всех последующих сценах. Нашего персонажа в частности.
Камеру стыдливо прикрываем загрузочным экраном, чтобы геймеры не знали откуда берутся персонажи.
Всем нужным объектам назначаем DontDestroy.
И только потом грузим первую игровую сцену. Естественно в ней персонажа уже не должно быть.
Возвращаться в нулевую сцену нельзя, но возвраты в первую уже не навредят.

Второй, несколько более костыльно-кустарный, но без лишних сцен.
Представь что ты и есть этот персонаж, ты приходишь в себя (Awake()), смотришь по сторонам, ищешь похожие объекты.
Если никого не находишь, то ты и есть уникальный настоящий мальчик.
Если находишь, еще и такого что себя считает настоящим, то понимаешь что ты клон, что места в жизни для тебя нет, печалишься, уходишь в депрессию, запой, и в конце концов заканчиваешь жизнь самоубийством (gameobject.Destroy();).
Как найти, это уже дело техники, я например в редакторе создавал персонажа с названием PlayerCharNew. Если он не находил GameObject.Find ("PlayerChar"), то сам менял имя на PlayerChar, иначе убивался.
Естественно будет много проблем если имя персонажа не уникальное. Но и там можно чтото придумать с флагами в скриптах или tag-ами.
Форум игроделов » Записи участника » Artaniel [48]
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Поиск:

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