Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 3D-программирование

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 11.11.2007, 17:19   #1
Maxxx.!!!.
Нуждающийся
 
Регистрация: 02.11.2007
Сообщений: 93
Написано 0 полезных сообщений
(для 0 пользователей)
Физика для шутеров - сразу не бить.

Так вот. Насколько я понял, обрабатывать столкновения стандартными средствами блитца можно через коллизион, и через энтити пик. Так вот, как бы реализовать лучше реализовать следующее: есть один меш, вроде как карта, и есть объект - сфера. Как сделать, чтобы сфера поднималась по лестницам (высота ступенек, например, 0.2), прыгала, но не карабкалась по стенам.
(Offline)
 
Ответить с цитированием
Старый 11.11.2007, 19:11   #2
ARA
ТЫ ЧООО?
 
Аватар для ARA
 
Регистрация: 26.02.2007
Сообщений: 3,369
Написано 2,020 полезных сообщений
(для 7,192 пользователей)
Re: Физика для шутеров - сразу не бить.

Лестница - очень просто!
Просто поверх лестницы ставишь наклонную плоскость (невидимую) и свера будет по ней ехать, как будто ты идёшь по лестнице.
__________________
Вертекс в глаз или в пиксель раз?
(Offline)
 
Ответить с цитированием
Старый 11.11.2007, 20:33   #3
Maxxx.!!!.
Нуждающийся
 
Регистрация: 02.11.2007
Сообщений: 93
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Физика для шутеров - сразу не бить.

Сообщение от ARENSHI
Лестница - очень просто!
Просто поверх лестницы ставишь наклонную плоскость (невидимую) и свера будет по ней ехать, как будто ты идёшь по лестнице.
Мысль, кстати. Спасибо! Только у меня по наклонной плоскости вверх персонаж двигается медленней, чем просто по ровному полу. Думаю, может, если Уигрока#>0, то СкоростьИгрока=СкоростьИгрока+1.5, или что-то в этом роде. Или есть другое решение проблемы?
(Offline)
 
Ответить с цитированием
Старый 11.11.2007, 21:55   #4
H@NON
Дэвелопер
 
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений
(для 774 пользователей)
Re: Физика для шутеров - сразу не бить.

есть. Применять силу игрока не вперед, а по наклону плоскости, ну то есть правильно поставить вектор силы. У тебя ведь игрок идет вперед так - moveentity player, 0, 0, 1 ?. Так нужно его развернуть по наклону плоскости, тогда не будет теряться сила. НО это очень муторно... А вот держи пример хождения по лестнице:
(Offline)
 
Ответить с цитированием
Старый 12.11.2007, 00:17   #5
Crystal
Терабайт исходников
 
Аватар для Crystal
 
Регистрация: 05.07.2007
Сообщений: 5,196
Написано 1,721 полезных сообщений
(для 5,374 пользователей)
Re: Физика для шутеров - сразу не бить.

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

Насчёт изменения скорости, так люди вверх идут медленне чем прямо.
(нагрузка больше)
__________________
Проект "Deathbring World - Rangers" и его финансовая поддержка:
https://boosty.to/deathbringrangers

Я на - TWITCH
Канал на YouTube
(Offline)
 
Ответить с цитированием
Старый 12.11.2007, 00:34   #6
ARA
ТЫ ЧООО?
 
Аватар для ARA
 
Регистрация: 26.02.2007
Сообщений: 3,369
Написано 2,020 полезных сообщений
(для 7,192 пользователей)
Сообщение Re: Физика для шутеров - сразу не бить.

Да, но можно предположить что у него там шутер, в котором десантник по лестницам бегает )

Конечно поворачивать на 45 не стоит. По теории надо вектор притяжения чела надо сделать перпендикулярно плоскости лестницы(это чтобы не скатывался)
__________________
Вертекс в глаз или в пиксель раз?
(Offline)
 
Ответить с цитированием
Старый 12.11.2007, 00:44   #7
Maxxx.!!!.
Нуждающийся
 
Регистрация: 02.11.2007
Сообщений: 93
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Физика для шутеров - сразу не бить.

Всем спасибо! Только вот я про все эти Pick не могу понять, как они действуют, и как их применять.
(Offline)
 
Ответить с цитированием
Старый 12.11.2007, 01:25   #8
-=SCiP=-
ПроЭктировщик
 
Аватар для -=SCiP=-
 
Регистрация: 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
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Физика для шутеров - сразу не бить.

необязательно поворачивать сам меш игрока.
достаточно повернуть вектор притяжения.
(Offline)
 
Ответить с цитированием
Старый 12.11.2007, 05:46   #10
dimond
Оператор ЭВМ
 
Регистрация: 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
H@NON
Дэвелопер
 
Регистрация: 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
dimond
Оператор ЭВМ
 
Регистрация: 14.09.2007
Сообщений: 27
Написано 2 полезных сообщений
(для 5 пользователей)
Re: Физика для шутеров - сразу не бить.

Это я про ровные поверхности писал, чтоб можно было подыматься на подьемы в 45 градусов и более без замедления.
Зато если игрок падает, то ускорение свободного падения само собой получается.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
физика NitE BlitzMax 5 23.07.2010 00:00
Как прочитать текст из txt сразу в переменную? xsnakes Visual Basic 3 10.12.2009 18:59
Физика ger1234567 Delphi 9 30.11.2009 18:34
Как проверить нажатие сразу нескольких кнопок? Kostia FAQ 5 07.08.2009 03:47
Физика Petrofan 3D-программирование 9 30.01.2009 20:56


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com