forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Физика для шутеров - сразу не бить. (http://forum.boolean.name/showthread.php?t=4991)

Maxxx.!!!. 11.11.2007 17:19

Физика для шутеров - сразу не бить.
 
Так вот. Насколько я понял, обрабатывать столкновения стандартными средствами блитца можно через коллизион, и через энтити пик. Так вот, как бы реализовать лучше реализовать следующее: есть один меш, вроде как карта, и есть объект - сфера. Как сделать, чтобы сфера поднималась по лестницам (высота ступенек, например, 0.2), прыгала, но не карабкалась по стенам.

ARA 11.11.2007 19:11

Re: Физика для шутеров - сразу не бить.
 
Лестница - очень просто!
Просто поверх лестницы ставишь наклонную плоскость (невидимую) и свера будет по ней ехать, как будто ты идёшь по лестнице.

Maxxx.!!!. 11.11.2007 20:33

Re: Физика для шутеров - сразу не бить.
 
Цитата:

Сообщение от ARENSHI
Лестница - очень просто!
Просто поверх лестницы ставишь наклонную плоскость (невидимую) и свера будет по ней ехать, как будто ты идёшь по лестнице.

Мысль, кстати. Спасибо! Только у меня по наклонной плоскости вверх персонаж двигается медленней, чем просто по ровному полу. Думаю, может, если Уигрока#>0, то СкоростьИгрока=СкоростьИгрока+1.5, или что-то в этом роде. Или есть другое решение проблемы?

H@NON 11.11.2007 21:55

Re: Физика для шутеров - сразу не бить.
 
Вложений: 2
есть. Применять силу игрока не вперед, а по наклону плоскости, ну то есть правильно поставить вектор силы. У тебя ведь игрок идет вперед так - moveentity player, 0, 0, 1 ?. Так нужно его развернуть по наклону плоскости, тогда не будет теряться сила. НО это очень муторно... А вот держи пример хождения по лестнице:

Crystal 12.11.2007 00:17

Re: Физика для шутеров - сразу не бить.
 
Развернуть? Тоесть наклонить под угол лестници?
И чё получится? Получится что наш юзер будет стоять под углом 45 градусов.
Помоему люди так по лестницам не ходят.

Насчёт изменения скорости, так люди вверх идут медленне чем прямо.
(нагрузка больше)

ARA 12.11.2007 00:34

Re: Физика для шутеров - сразу не бить.
 
Да, но можно предположить что у него там шутер, в котором десантник по лестницам бегает )

Конечно поворачивать на 45 не стоит. По теории надо вектор притяжения чела надо сделать перпендикулярно плоскости лестницы(это чтобы не скатывался)

Maxxx.!!!. 12.11.2007 00:44

Re: Физика для шутеров - сразу не бить.
 
Всем спасибо! Только вот я про все эти Pick не могу понять, как они действуют, и как их применять.

-=SCiP=- 12.11.2007 01:25

Re: Физика для шутеров - сразу не бить.
 
Если захочеш сделать вертикальном положении лестницу попробуй такой
код
if EntityCollided(Player,TypeLestnica)<>0 then TranslateEntity Player,0,6,0

Но там маленький недостато есть! Это не дороботаный код!

HolyDel 12.11.2007 01:35

Re: Физика для шутеров - сразу не бить.
 
необязательно поворачивать сам меш игрока.
достаточно повернуть вектор притяжения.

dimond 12.11.2007 05:46

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# определяет скорость падения игрока.

H@NON 12.11.2007 10:49

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


dimond 13.11.2007 01:40

Re: Физика для шутеров - сразу не бить.
 
Это я про ровные поверхности писал, чтоб можно было подыматься на подьемы в 45 градусов и более без замедления.
Зато если игрок падает, то ускорение свободного падения само собой получается.


Часовой пояс GMT +4, время: 18:57.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot