![]() |
Колизия при прыжке
Вот код прыжка где то нашел в семплах. Работает он нормально по крайней мере игрок не будет бегать по стенам но в нем есть проблема, когда подпрыгнуть в углу где стены сходятся игрок застревает, а если отойти назад отцепляется от стены. Вот сам код:
Graphics3D 800,600,32,0 SetBuffer BackBuffer() Global gravity#=.08,jumpvel#=2 Global mx,my,angx#,angy#,m#,cam,player Const Player_T=1,Map_T=2 Player=CreatePivot() EntityRadius player,5,9 EntityType player,player_T cam= CreateCamera(Player) tex = CreateTexture(256,256) tb=TextureBuffer(tex) For i=0 To 255 Print(255-i) For j=0 To 255 grey = Rand(0,25) r_=Rand(100)+grey g_=Rand(200)+grey*20 b_=Rand(30)+grey*10 WritePixel i,j,(r_ Shl 16) Or (g_ Shl 8) Or b_,tb Next Next box=CreateCube() ScaleEntity box,50,50,50 EntityTexture box,tex FlipMesh box EntityType box,Map_T Collisions Player_T,Map_T,2,3 Repeat If KeyDown( 30 )=True Then speedX#=-1 If KeyDown( 32 )=True Then speedX#= 1 If KeyDown( 31 )=True Then speedZ#=-1.5 If KeyDown( 17 )=True speedZ#= 1.5 mx = MouseX() my = MouseX() angx#=(-MouseXSpeed()-angx#)/2.4+angx# angy#=(MouseYSpeed()-angy#)/2.4+angy# m#=m#+angy#*.07 If m> 90 Then m=90 If m<-90 Then m=-90 MoveMouse GraphicsWidth()*0.5, GraphicsHeight()*0.5 RotateEntity cam,m#,0,0 TurnEntity player,0,angx#*.07,0 If jumping=0 If KeyDown(57) And EntityCollided(player,map_t)>1 Then yvel#=jumpvel# jumping=1 EndIf If jumping=1 yvel#=yvel#-gravity# by#=by#+yvel# EndIf If by#<1 Then by#=1 yvel#=0 jumping=0 speedX#=speedX#*.6 speedZ#=speedZ#*.6 MoveEntity player,speedX#,yvel#,speedZ# If jumping=0 Then MoveEntity player,0,-.55,0 UpdateWorld RenderWorld If KeyHit(1) End Flip Forever Помогите разобраться ! |
Ответ: Колизия при прыжке
не знаю как это поправить, но этот с помощью этого бага можно вылезти даже до потолка )
попробуй сам написать код прыжка. иногда легче самому сделать, чем поправить чужое |
Ответ: Колизия при прыжке
Нет !!! Зачем изобретать велосипед. В коде прыжка все нормально это колизия кривая вот и прошу помощи чтобы устранить этот баг.
|
Ответ: Колизия при прыжке
Сори если обижу - но позже если пойдешь по пути прогинга скажешь что праильно сказал :))
ЭТ У ТЯ БАШКА КРИВАЯ :)))))))))))))))) Напиши заново!!!!! |
Re: Колизия при прыжке
качай - смотри код http://forum.boolean.name/showthread.php?t=7532
|
Ответ: Колизия при прыжке
код фиговый, чтобы игрок не лазил по потолкам и стенкам или не отталкивался от них, то нужно проверять наклон поверхности. Для этого есть команды CollisionNX/NY/NZ, вот через них и сравнивай. Если значение стоит в определенных пределах, то разрешай игроку прыгать, если не стоит то запрещай.
|
Ответ: Колизия при прыжке
Я уже все перепробовал с CollisionNY и у меня постоянно ошибку выдает Collision index out of range почему это так?
|
Ответ: Колизия при прыжке
Можно стенам и полу назначить разные EntityType, что лучше в д. случае.
А в этом примере можно добавить If jumping=0 yvel#=yvel#-gravity#/2 или 3,4 итд подобрать короче чтоб хотя бы сползал со стен )) , а на потолке вообще не будтет зависать скорее всего. |
Ответ: Колизия при прыжке
Цитата:
Код:
count = CountCollisions(player) Код:
count = CountCollisions(player) |
Ответ: Колизия при прыжке
простите меня что малясь не в тему)
Вопрос: работает ли колизия с моделями *.md2, а то я вроде всё правильно делаю, а все равно проникает...Помогите |
Ответ: Колизия при прыжке
Код пожалуйста, мы ведь не экстрасенсы
|
Ответ: Колизия при прыжке
ах да, забыл(
Graphics3D 0,0,32,1 SetBuffer BackBuffer() Global Player=CreateSphere() Global CamPlayer=CreateCamera(Player) PositionEntity Player,50,60,60 EntityRadius player,8,25 EntityType player, TypePlayer Global L2L1=LoadMD2("Media\Models\L2L1\L2L1.md2") L2L1T=LoadTexture("Media\Models\L2L1\L2L1T.jpg") EntityTexture L2L1,L2L1T PositionEntity L2L1,74,-12,547 ScaleEntity L2L1,0.5,0.5,0.5 RotateEntity L2L1,0,-90,0 EntityType L2L1, TypeWall Collisions TypePlayer, TypeWall, 2,3 While Not KeyHit(1) RenderWorld UpdateWorld Flip Wend End |
Ответ: Колизия при прыжке
Ты забыл типы объявить. Пропиши перед глобалами
Const TypePlayer=1, TypeWall=2 |
Ответ: Колизия при прыжке
***** , я просто нечаяно забыл написать( колизия с другими объктами рабоатет, а имено c *.csm
|
Ответ: Колизия при прыжке
Будь внимательнее, ты в таком коротком коде ошибся, когда будешь писать огромные проекты, невнимательность будет для тебя страшным врагом.
|
Часовой пояс GMT +4, время: 18:58. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot