надо добавить хп персонажу, и чтобы пушки стреляли. Корованы пока ненадо =)
Добавил ссылку на гитхаб.
StepEver
> и добавьте рандомных нормалей туда же.
Хорошая мысль.
Anders333
> надо добавить хп персонажу, и чтобы пушки стреляли. Корованы пока ненадо =)
Ну да. Как-то так.
А что еще в демо планируется?
Александр придумал, что нужно супер крутую демку запилить, чтоб выглядело круче анрила, но никто моделить не умеет)))
Anders333
> А что еще в демо планируется?
Больше ничего.
1vanK
> Александр придумал, что нужно супер крутую демку запилить, чтоб выглядело круче анрила, но никто моделить не умеет)))
Ну, что ж поделаешь. Придётся обходиться тем, что есть.
Пушка мне нра. Единственное, что рёбра в некоторых местах можно было бы нормалями сгладить.
StepEver
> А что не нравится?
Пол просто никакущий.
1vanK
> Александр придумал, что нужно супер крутую демку запилить, чтоб выглядело круче
> анрила, но никто моделить не умеет)))
Ну а что вобщем надо для демки?
Да я хз, Codingmonkey свое представление имеет, а Саша123 свое )
1vanK
> Codingmonkey свое представление имеет, а Саша123 свое )
Ну, как правило каждый имеет свою точку зрения в любом вопросе.
В данном случае не думаю, что мы сильно расходимся. Я всего лишь хочу для начала встроить самое необходимое, т.ск., минимально необходимый набор. А потом можно добавлять.
Демка, блин. Тут вон на вращении турелей подвис.
Саша123
> Демка, блин. Тут вон на вращении турелей подвис.
в апдейте:
node.rotation = node.rotation.Nlerp(targetRotation, timeStep * SPEED, true);
коротко и просто, но скорость будет неравномерной - то есть при большой разнице углов быстрое вращение, но при приближении к целевому углу будет замедляться
Если нужна равномерная скорость поворота в сторону какой то точки, то я так делал (код тестовый и грязный, переписать нужно по нормальному):
float angle = Atan2(targetPos.x - myNode2.position.x, targetPos.z - myNode2.position.z); float delta = angle - myNode2.rotation.yaw; if (delta < -180) delta += 360; else if (delta > 180) delta -= 360; float sign = 1; if (delta != 0) sign = delta / Abs(delta); if (Abs(delta) > rotSpeed * timeStep) delta = rotSpeed * timeStep * sign; angle = myNode2.rotation.yaw + delta; myNode2.rotation = Quaternion(0, angle, 0);
Второй пример с математикой наверняка по тупому сделан, код старый, там наверняка надо с кватернионом было замутить, но мне щас лень в этом разбираться)
Немного поясню что тут делается angle - это угол на который вообще должна быть повернута нода (целевой поворот ноды), а дельта - это это угол, на который повернятся нода в текущей итерации игрового цикла (то есть за время timeStep). То есть есть дельта ограничена максимальной скоростью поворота (углом, на который может повернутсья нода за время timeStep)
EDIT: вращение тут только вокруг вертикальной оси
1vanK
Спасибо, теперь всё работает как надо.
Из-за того, что delta не приводил к (-180, 180), в одну сторону нормально крутилась, а во вторую не по малому углу, а по большому О_о
я пока основные формы прикидываю, чтобы не дофига их было и не сильно сложно )
и simple deforms bend меня что-то озадачил, он вообще корректно работает если origin в углу у модуля?
StepEver
> Меня опять забыли :(((
Я думаю, тут каждый имеет свое представление =)