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=18309)

Demon 04.07.2013 00:42

Прыжок и гравитация.
 
Два дня назад начал изучать blitz3D.Решил создать небольшую игру все хорошо но без гравитации:( .Например после того как залез на замок нельзя с него слезть.Помогите это исправить:) .И если не сложно помогите создать прыжок.Вот код :
Код:

Graphics3D 640,480,16,1

SetBuffer BackBuffer()

lit=CreateLight()




Const TypePlayer=1,TypeWall=2,typewell=3,Typepln=4,Typecamolet=5


player=CreateCube()
tex=LoadTexture("J:\games\texture\Wood1.png")
EntityTexture player,tex
EntityType player,typeplayer

cam=CreateCamera(player)

PositionEntity cam,0,5,-10
PositionEntity player,0,0,0

x=CreatePlane()
tex=LoadTexture("J:\games\texture\Ground.png")
EntityTexture x,tex
PositionEntity x,0,-1,0





wall= LoadMesh("J:\games\model\fighter.3ds")
ScaleEntity wall, 0.1, 0.1, 0.1
PositionEntity wall, 110,6,20
EntityType wall,Typewall
Collisions Typeplayer,Typewall,2,1


camolet= LoadMesh("J:\games\model\fighter.3ds")
ScaleEntity camolet, 0.1, 0.1, 0.1
PositionEntity camolet, 70,6,20

EntityType camolet,Typecamolet
Collisions TypePlayer,Typecamolet,2,1

camolet= LoadMesh("J:\games\model\fighter.3ds")
ScaleEntity camolet, 0.1, 0.1, 0.1
PositionEntity camolet, 150,6,20

EntityType camolet,Typecamolet
Collisions TypePlayer,Typecamolet,2,1

well=LoadMesh("J:\games\model\wcrate1.3ds")
ScaleEntity well,0.1,0.1,0.1
PositionEntity well,-16,5,-30

EntityType well,TypeWell
Collisions TypePlayer,TypeWell,2,1

well=LoadMesh("J:\games\model\wcrate1.3ds")
ScaleEntity well,0.1,0.1,0.1
PositionEntity well,-20,1,-30

EntityType well,TypeWell
Collisions TypePlayer,TypeWell,2,1

well=LoadMesh("J:\games\model\wcrate1.3ds")
ScaleEntity well,0.1,0.1,0.1
PositionEntity well,-16,1,-34

EntityType well,TypeWell
Collisions TypePlayer,TypeWell,2,1

well=LoadMesh("J:\games\model\wcrate1.3ds")
ScaleEntity well,0.1,0.1,0.1
PositionEntity well,-12,1,-30

EntityType well,TypeWell
Collisions TypePlayer,TypeWell,2,1

well=LoadMesh("J:\games\model\wcrate1.3ds")
ScaleEntity well,0.1,0.1,0.1
PositionEntity well,-16,1,-26

EntityType well,TypeWell
Collisions TypePlayer,TypeWell,2,1


well=LoadMesh("J:\games\model\CASTLE1.X")
ScaleEntity well,0.1,0.1,0.1
PositionEntity well,0,-3,0

EntityType well,TypeWell
Collisions TypePlayer,TypeWell,2,3

Repeat



    If KeyDown(200) MoveEntity player,0,0,.9
   
    If KeyDown(208) MoveEntity player,0,0,-.1
   
    If KeyDown(203) TurnEntity player,0,1,0
   
    If KeyDown(205) TurnEntity player,0,-1,0
   
    If KeyDown(30) MoveEntity cam,0,0,.1
   
    If KeyDown(44) MoveEntity cam,0,0,-.1
   
   
    UpdateWorld
    RenderWorld
    Flip

Until KeyHit(1)

End

Пожалуйста напишите все кодом.:)

Demon 04.07.2013 00:44

Ответ: Прыжок и гравитация.
 
Вместо смайла в очках 8 ) .

SBJoker 04.07.2013 01:03

Ответ: Прыжок и гравитация.
 
Видимо у тебя не хватает гравитации, двигай игрока каждый кадр с некоторой скоростью вниз (для начала), должно помочь.

Nikich 04.07.2013 01:16

Ответ: Прыжок и гравитация.
 
Код:

LoadMesh("J:\games\model\fighter.3ds")
Воу-воу, парень, полегче.

Demon 04.07.2013 13:04

Ответ: Прыжок и гравитация.
 
двигай игрока каждый кадр с некоторой скоростью вниз это как ?

ant0N 04.07.2013 14:05

Ответ: Прыжок и гравитация.
 
Код:

global grav = 9.8
в главном цикле
Код:

TranslateEntity Player, 0, -grav, 0

Nex 04.07.2013 14:21

Ответ: Прыжок и гравитация.
 
Код:

global grav = 0.001
Для начала.

ant0N 04.07.2013 14:24

Ответ: Прыжок и гравитация.
 
Nex, да я поставил чтобы понятно было что это гравитация :)

Demon 04.07.2013 22:05

Ответ: Прыжок и гравитация.
 
Спасибо :)
А что на счет прыжка подскажите плз :(

Nex 04.07.2013 22:54

Ответ: Прыжок и гравитация.
 
Практически тоже самое только наоборот да и на форуме уже просто куча тем про прыжки.

Сначала проверяем на земле ли стоит игрок и если да, то делаем что то типа такого:
Цитата:

If KeyHit (57) Then
grav=1
EndIf

grav=grav-0.01

TranslateEntity player,0,grav,0

Demon 04.07.2013 23:46

Ответ: Прыжок и гравитация.
 
Я пишу If KeyDown(57) MoveEntity player,0,10,1
все хорошо но как сделать что быть он 1 раз подпрыгнул и упал на землю ,а то можно прыгать все выше и выше .:(

Nex 05.07.2013 00:04

Ответ: Прыжок и гравитация.
 
Я же тебе написал что надо проверять стоит ли игрок на земле или нет. Проверить можно вроде через EntityCollided. Должно быть больше или меньше нуля (<>0).
че то типа такого. я просто не имею под рукой блитза.
Код:

If EntityCollided (player,TYPE_GROUND) <>0 then
 ;тут код с прыжком
EndIf


Kudesnic 05.07.2013 21:50

Ответ: Прыжок и гравитация.
 
http://forum.boolean.name/showthread.php?t=16294
Посмотри, может возьмешь с кода что-нибудь нужное


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

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