|
3D-программирование Вопросы, касающиеся программирования 3D мира |
03.11.2007, 17:27
|
#1
|
AnyKey`щик
Регистрация: 09.10.2007
Сообщений: 11
Написано 0 полезных сообщений (для 0 пользователей)
|
Вопрос про коллизии
Помогите понять ситуацию:
сделал модель комнаты, в ней столы и стулья (по типу офисных).
Созданы коллизии
Collisions IGROK,STOL,2,3
Collisions IGROK,STUL,2,3
И почему то если игрок запрыгивает на стол, его иногда (вернее скорее всего) подклинивает. И он уже с места не двигается.
Почему? Он и прыгать отказывается после того как его клинануло...
|
(Offline)
|
|
03.11.2007, 18:03
|
#2
|
Гигант индустрии
Регистрация: 04.08.2006
Сообщений: 2,642
Написано 53 полезных сообщений (для 92 пользователей)
|
Re: Вопрос про коллизии
Collisions IGROK,STOL, 2,3
2 - сфера к полигону
3 - скольжение с предотвращением скатывания с наклонов
Мож луче делать колизию не к полигону, а к паралелепипеду ?
И ваще фиг иго знает какие у тя тама модельки. )))
|
(Offline)
|
|
03.11.2007, 19:06
|
#3
|
Дэвелопер
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений (для 774 пользователей)
|
Re: Вопрос про коллизии
подбери радиус коллизии, мож у тебя сфера коллизии игрока изначально находится в столе/стуле, тогда может глючить, или еще , если у тебя есть гравитация, то отключай ее как только игрок твердо стоит на земле. И вообще приведи полный код, там где у тебя обрабатываются коллизии...
|
(Offline)
|
|
04.11.2007, 11:48
|
#4
|
AnyKey`щик
Регистрация: 09.10.2007
Сообщений: 11
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Вопрос про коллизии
Спасибо за подсказки, буду пробовать
|
(Offline)
|
|
09.11.2007, 00:54
|
#5
|
Нуждающийся
Регистрация: 19.07.2007
Сообщений: 85
Написано 3 полезных сообщений (для 3 пользователей)
|
Re: Вопрос про коллизии
Ох... Что-то я совсем запутался с этими колизиями... Может вы мне разьясните... Уже сколько этот castle не перелистывал, уже тупо копи паст делал всёравно не работает!!! Вопсчем вот:
p\entity - пивот (EntityRadius=1.5)
p\model - модель привязаная к пивоту
p\y - изначально координата появления по y объекта
collisions TPlayer(на пивоте), CPol(Plane),2,3
идёт обновление мира (пытаюсь сделать гравитацию)
делаем так
ny#=entityy(p\entity)
d_y#=ny-p\y
p\y=ny
d_y=d_y-.2
trnanslateentity p\entity,0,d_y,0
В дэбаг при колизии должна появиться запись... Также в дебаг пишу каждый раз d_y (он от -0.2 и ниже)... Собственно вопрос... Ну пачиму он не колижица????=(((((((( Уже часа 2 долюаюсь =(
|
(Offline)
|
|
09.11.2007, 01:03
|
#6
|
Гигант индустрии
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений (для 4,437 пользователей)
|
Re: Вопрос про коллизии
Вот рабочий код прямо из проекта:
Function UpdateJump()
If he\jump>0 And he\jump_state=1
he\gravity#=he\gravity+he\jump
he\jump=he\jump/1.2
EndIf
;Гравитация
If he\collign
he\gravity=0
he\dop=0
Else
he\dop=he\dop-0.001
If he\dop<-0.06 he\dop=-0.06
he\gravity=he\gravity+he\dop
EndIf
TranslateEntity he\piv,0,he\gravity,0
he\collign=EntityCollided(he\piv,2)
If he\jump_state=1 And he\collign<>0
he\jump_state=0
he\jump_k=0
he\jump=0
EndIf
End Function
|
лишние переменные выкинешь сам 9там у меня двойной прыжок. отсюда избыток стейтов)
__________________
|
(Offline)
|
|
09.11.2007, 01:39
|
#7
|
Терабайт исходников
Регистрация: 05.07.2007
Сообщений: 5,196
Написано 1,721 полезных сообщений (для 5,374 пользователей)
|
Re: Вопрос про коллизии
GomZik
Надо было весь код выложить чёб все поняли.
я ваще не пойму нах там пивоты.
короче щас тебе пример коллизии и гравитации напишу:
Graphics3D 800, 600, 32
SetBuffer BackBuffer()
HidePointer
Global Red=100
Global Green=150
Global Blue=200
Global User
Global Zemla
Global G#=1
Global l = CreateLight()
Const TypeUser=1,TypeZemla=2,Gravitaciya#=1
User = CreateSphere(10)
ScaleEntity User,1,1,1
PositionEntity User,0,200,0
EntityType User,TypeUser
EntityColor User,90,10,10
EntityRadius User,1
Camera = CreateCamera(User)
PositionEntity Camera,0,30,-20
RotateEntity Camera,35,0,0
CameraClsColor Camera,red,green,Blue
Zemla = CreatePlane()
PositionEntity Zemla,0,-20,0
EntityType Zemla,TypeZemla
EntityColor Zemla,100,200,100
Collisions TypeUser,TypeZemla,2,3
While Not KeyDown(1)
If G#=1 Then TranslateEntity User,0,-Gravitaciya#,0
UpdateWorld
RenderWorld
Flip
Wend
End
|
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 00:54.
|