|
3D-программирование Вопросы, касающиеся программирования 3D мира |
11.11.2007, 17:19
|
#1
|
Нуждающийся
Регистрация: 02.11.2007
Сообщений: 93
Написано 0 полезных сообщений (для 0 пользователей)
|
Физика для шутеров - сразу не бить.
Так вот. Насколько я понял, обрабатывать столкновения стандартными средствами блитца можно через коллизион, и через энтити пик. Так вот, как бы реализовать лучше реализовать следующее: есть один меш, вроде как карта, и есть объект - сфера. Как сделать, чтобы сфера поднималась по лестницам (высота ступенек, например, 0.2), прыгала, но не карабкалась по стенам.
|
(Offline)
|
|
11.11.2007, 19:11
|
#2
|
ТЫ ЧООО?
Регистрация: 26.02.2007
Сообщений: 3,369
Написано 2,020 полезных сообщений (для 7,192 пользователей)
|
Re: Физика для шутеров - сразу не бить.
Лестница - очень просто!
Просто поверх лестницы ставишь наклонную плоскость (невидимую) и свера будет по ней ехать, как будто ты идёшь по лестнице.
__________________
Вертекс в глаз или в пиксель раз?
|
(Offline)
|
|
11.11.2007, 20:33
|
#3
|
Нуждающийся
Регистрация: 02.11.2007
Сообщений: 93
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Физика для шутеров - сразу не бить.
Сообщение от ARENSHI
Лестница - очень просто!
Просто поверх лестницы ставишь наклонную плоскость (невидимую) и свера будет по ней ехать, как будто ты идёшь по лестнице.
|
Мысль, кстати. Спасибо! Только у меня по наклонной плоскости вверх персонаж двигается медленней, чем просто по ровному полу. Думаю, может, если Уигрока#>0, то СкоростьИгрока=СкоростьИгрока+1.5, или что-то в этом роде. Или есть другое решение проблемы?
|
(Offline)
|
|
11.11.2007, 21:55
|
#4
|
Дэвелопер
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений (для 774 пользователей)
|
Re: Физика для шутеров - сразу не бить.
есть. Применять силу игрока не вперед, а по наклону плоскости, ну то есть правильно поставить вектор силы. У тебя ведь игрок идет вперед так - moveentity player, 0, 0, 1 ?. Так нужно его развернуть по наклону плоскости, тогда не будет теряться сила. НО это очень муторно... А вот держи пример хождения по лестнице:
|
(Offline)
|
|
12.11.2007, 00:17
|
#5
|
Терабайт исходников
Регистрация: 05.07.2007
Сообщений: 5,196
Написано 1,721 полезных сообщений (для 5,374 пользователей)
|
Re: Физика для шутеров - сразу не бить.
Развернуть? Тоесть наклонить под угол лестници?
И чё получится? Получится что наш юзер будет стоять под углом 45 градусов.
Помоему люди так по лестницам не ходят.
Насчёт изменения скорости, так люди вверх идут медленне чем прямо.
(нагрузка больше)
|
(Offline)
|
|
12.11.2007, 00:34
|
#6
|
ТЫ ЧООО?
Регистрация: 26.02.2007
Сообщений: 3,369
Написано 2,020 полезных сообщений (для 7,192 пользователей)
|
Re: Физика для шутеров - сразу не бить.
Да, но можно предположить что у него там шутер, в котором десантник по лестницам бегает )
Конечно поворачивать на 45 не стоит. По теории надо вектор притяжения чела надо сделать перпендикулярно плоскости лестницы(это чтобы не скатывался)
__________________
Вертекс в глаз или в пиксель раз?
|
(Offline)
|
|
12.11.2007, 00:44
|
#7
|
Нуждающийся
Регистрация: 02.11.2007
Сообщений: 93
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Физика для шутеров - сразу не бить.
Всем спасибо! Только вот я про все эти Pick не могу понять, как они действуют, и как их применять.
|
(Offline)
|
|
12.11.2007, 01:25
|
#8
|
ПроЭктировщик
Регистрация: 23.09.2007
Сообщений: 126
Написано 11 полезных сообщений (для 16 пользователей)
|
Re: Физика для шутеров - сразу не бить.
Если захочеш сделать вертикальном положении лестницу попробуй такой
код
if EntityCollided(Player,TypeLestnica)<>0 then TranslateEntity Player,0,6,0
Но там маленький недостато есть! Это не дороботаный код!
|
(Offline)
|
|
12.11.2007, 01:35
|
#9
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Re: Физика для шутеров - сразу не бить.
необязательно поворачивать сам меш игрока.
достаточно повернуть вектор притяжения.
|
(Offline)
|
|
12.11.2007, 05:46
|
#10
|
Оператор ЭВМ
Регистрация: 14.09.2007
Сообщений: 27
Написано 2 полезных сообщений (для 5 пользователей)
|
Re: Физика для шутеров - сразу не бить.
Попробуй так (чтоб игрок не замедлялся когда подымается)
Сначала надо проверить, если игрок движется вверх, то установить гравитацию в нуль, если вниз - в минус.
Проверка проста - замеряем координаты игрока до UpdateWorld() и после.
Global yv1#,yv2#,yvd#
Global bst#=1
Global gravity#=-0.01
Это пишем до UpdateWorld()
;устанавливаем притяжение в нуль если yvd>0
If yvd>(gravity*-1) yvd=(gravity*-1)
yv1=EntityY(player)
MoveEntity Player,0,gravity+yvd,0
Это после UpdateWorld()
yv2=EntityY(player)
yvd=(yv2-yv1)*bst
все значения я взял из своей игрулины, все работает (коллизия игрока с миром - сфера(радиус 1) с полигонами).
значение gravity# подбирается самостоятельно, оно должно быть отрицательным. Угол, при котором игрок уже не сможет взобраться на подьем, зависит от нее и от скорости игрока по X и Z. bst# определяет скорость падения игрока.
|
(Offline)
|
|
12.11.2007, 10:49
|
#11
|
Дэвелопер
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений (для 774 пользователей)
|
Re: Физика для шутеров - сразу не бить.
Сообщение от Maxxx.!!!.
Всем спасибо! Только вот я про все эти Pick не могу понять, как они действуют, и как их применять.
|
С помощью нее просто находится точка на модели с чем можно контактировать и возвращает положение этой точки и её нормали. Так что это своеобразная проверка, где наш игрок находится. так можно определить что под тобой - лестница или земля.
И совсем не обязательно что-либо менять в гравитации, пусть себе притягивает. Нужно просто вообразить себе как вы сами подымаетесь по лестнице, так и сделать. Я вот например когда подымаюсь по ступенькам заношу ногу над ней и далее двигаюсь вперед, то есть можно сделать так:
if лестница=1 and moveplayer=1 then
plY=1
pl_speed#=0.5
else
plY=0
pl_speed#=0
endif
...
moveentity player, 0, 0, pl_speed#
translateentity player, 0, gravity+plY, 0
|
(Offline)
|
|
13.11.2007, 01:40
|
#12
|
Оператор ЭВМ
Регистрация: 14.09.2007
Сообщений: 27
Написано 2 полезных сообщений (для 5 пользователей)
|
Re: Физика для шутеров - сразу не бить.
Это я про ровные поверхности писал, чтоб можно было подыматься на подьемы в 45 градусов и более без замедления.
Зато если игрок падает, то ускорение свободного падения само собой получается.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 16:15.
|