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

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

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

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

Ответ
 
Опции темы
Старый 19.12.2007, 19:00   #1
Regfre
AnyKey`щик
 
Регистрация: 15.12.2007
Сообщений: 12
Написано 0 полезных сообщений
(для 0 пользователей)
Вопрос Помогте с тачкой!

Я хочу чтобы машина перемещалась вместе сигроком и непроваливалась под землю.
Help me !Please!!


Graphics3D 800, 600 ,32,1
SetBuffer BackBuffer()

Const TypePlayer = 1, TypeWall = 2 ,TypeFloor=4,TypeWeapon =5  TYPE_BULLET = 6 TypeAuto =7

Global lWire = False

Global windwave#
Global grasscount

ramp=CreateMesh()
ScaleEntity ramp,10,10,10
surf=CreateSurface( ramp )

segs=1
width#=2

Global g# = 0.3

JM#=terra_y#
JUMP=0
K=1
bmwy# = -15

Global player=CreateSphere()
PositionEntity player,120, 100, 1200
TurnEntity player,0,0,0
EntityRadius player, 5
EntityType player, TypePlayer

Global bull_sprite=LoadSprite( "spark.png" )
ScaleSprite bull_sprite,0.3,0.3
EntityRadius bull_sprite,1.5
EntityType bull_sprite,TYPE_BULLET
HideEntity bull_sprite

Type Bullet
   Field rot#,sprite,time_out
End Type

Collisions TYPE_BULLET,TypeFloor, 1, 1

For k=0 To segs
    x#=Float(k)*width/segs-width/2
    u#=Float(k)/segs
    AddVertex surf,x,1,0,u,0
    AddVertex surf,x,-1,0,u,1
Next
For k=0 To segs-1
    AddTriangle surf,k*2,k*2+2,k*2+3
    AddTriangle surf,k*2,k*2+3,k*2+1
Next
EntityFX ramp, 16 Or 1

grasstex=LoadBrush("grass.png",4)
PaintMesh ramp, grasstex

Dim AirVents(20)
Global iAirVentsCount% = 0

plan = CreatePlane()
tp =LoadTexture("stone.bmp")
EntityTexture plan,tp
ScaleTexture tp, 5,5

camera = CreateCamera(player)

CameraRange camera,0.1,40000
;CameraFogMode Camera,1
;CameraFogColor Camera,255,255,255
;CameraClsColor Camera,255,255,255
;CameraFogRange Camera,10,100000000

light=CreateLight(0)
RotateEntity light,45,0,0

; Load terrain
Global terrain = LoadTerrain( "lmap.bmp" )
Global Y_TERR# = 0.0

; Set terrain detail, enable vertex morphing
TerrainDetail terrain,4000,True

; Scale terrain
ScaleEntity terrain,2,45,2

; Texture terrain
grass_tex=LoadTexture( "ground.bmp" )
EntityTexture terrain,grass_tex,0,1
ScaleTexture grass_tex, 10,10
FreeTexture grass_tex

; Water
Global watermesh=LoadMesh("20x20mesh.3ds")  
RotateMesh watermesh,90,0,0 
RotateEntity watermesh,-90,0,0
ScaleEntity watermesh,100,100,10
PositionEntity watermesh, 0,29,0

watertexture=LoadAnimTexture("Wateranim.JPG",256,124,124,0,25)
EntityTexture watermesh,watertexture,0,1
ScaleTexture watertexture,.01,.01
EntityShininess watermesh,0.2
EntityAlpha watermesh, 0.5
EntityFX watermesh, 16

house=LoadMD2( "house.md2" )
house_tex=LoadTexture( "text1.jpg" )
EntityTexture house,house_tex
Y# = TerrainY(terrain, 50,50,160)
PositionEntity house, 350,Y,360
ScaleEntity house, 0.3,0.3,0.3
TurnEntity house, 0,-50,0
FreeTexture house_tex
EntityType house, TypeWall
;EntityRadius house, 20

;Tree
tree = LoadMesh("Tree.b3d")
FlipMesh tree
ScaleEntity tree, .05, .05, .05
PositionEntity tree,0,0,0
TurnEntity tree ,0,0,0
EntityFX tree, 1000
EntityPickMode tree,1
HideEntity tree

sp=CreateSphere(32)
PositionEntity sp,3000,1800,3000
ScaleEntity sp,50,50,50
texm=LoadTexture("moon/moon.JPG")
EntityTexture sp, texm
FreeTexture texm


Global sky=load_skybox("sky\sky")
;PositionEntity sky,x#,y#,z#
ScaleEntity sky,5000,1000,5000
EntityOrder sky,1
EntityFX sky,9

m01 = LoadMesh("01.3ds")
ScaleEntity m01,120,160,40
RotateEntity m01,90,90,0
PositionEntity m01,500,35,1450
EntityType m01, TypeWall
tex2 =LoadTexture("FlatBrick.bmp")
ScaleTexture tex2,0.2,1
EntityTexture m01,tex2
FreeTexture tex2


m03 = LoadMesh("Maps/map3.b3d")
ScaleEntity m03 ,0.15,0.1,0.2
PositionEntity m03 ,500,45,1300
RotateEntity m03,0,90,0
EntityType m03,TypeFloor

m04 = LoadMesh("Maps/shooter.b3d")
ScaleEntity m04,0.1,0.1,0.1
PositionEntity m04 ,540,46,760
EntityType m04,TypeFloor

mp5 = LoadMesh("mp5.b3d",player)
PositionEntity mp5 ,4,-3,4
RotateEntity mp5,0,90,0
ScaleEntity mp5,0.2,0.2,0.2
EntityType mp5,TypeWeapon

bmw = LoadMesh("bmw/bmw.b3d")
PositionEntity bmw ,540,51,1006
ScaleEntity bmw ,0.3,0.3,0.3
EntityType bmw,TypeAuto


Dim grass(1000)
Dim grass_dir#(1000)
grasscount=0
For j#=-1000 To 1000 Step 100
   For i#=-1000 To 1000 Step 100
       grass(grasscount)=CopyEntity(ramp)
       x#=(i+Rnd(150,150))
       z#=(j+Rnd(150,150))
       y#=TerrainY(terrain,x#,y#,z#);
       If Y < 30 Then X= 897897
       PositionEntity grass(grasscount),x,y,z
       grass_dir(grasscount)=Rand(-450,450)
       grasscount=grasscount+1
Next
Next
HideEntity ramp


SeedRnd MilliSecs()
For i=1 To 150
   X# = Rnd(10,600)
   Z# = Rnd(10,600)
   tree1 = CopyEntity( tree )
   Y# = TerrainY(terrain, X,50,Z)
    If Y < 30 Then X= 897897
   PositionEntity tree1, X, Y, Z 

Next

AmbientLight 100,100,100

Global waterflow# = 10
Global wavesize# = 0.05

Global surface=GetSurface(watermesh,1)

Global VertexCount=CountVertices(surface)

Type Vertices
	Field x#
	Field y#
	Field z#
End Type

Dim Vertex.Vertices(VertexCount)

For A=0 To VertexCount-1
  Vertex(a) = New Vertices
  Vertex(a)\x#=VertexX#(surface,a)
  Vertex(a)\y#=VertexY#(surface,a)
  Vertex(a)\z#=VertexZ#(surface,a)
Next

Collisions TypePlayer, TypeWall, 2, 2 
Collisions TypePlayer, TypeFloor, 2, 3
Collisions TypePlayer, TypeAuto, 2, 3 
;Collisions TypePlayer, TypeWeapon, 2, 3 

While Not KeyDown( 1 )

; Toggle terrain shading value between 0 and 1 when spacebar is pressed
If KeyHit(57)=True Then terra_shade=1-terra_shade

; Enable/disable terrain shading
TerrainShading terrain,terra_shade

dest_yang# = 100
mxs = MouseXSpeed()/2:mys = MouseYSpeed()/2
dest_xang# = dest_xang# - mxs:dest_yang# = dest_yang# +mys
xm# = CurveValue (xm#, dest_xang#, 3):ym# =  CurveValue (ym#, dest_yang#, 3)


If KeyDown( 32 )=True Then TurnEntity player,0,-5,0
If KeyDown( 30 )=True Then TurnEntity player,0,5,0
If KeyDown( 31 )=True Then MoveEntity player,0,0,-1
If KeyDown( 17 )=True Then MoveEntity player,0,0,2
If KeyHit( 16 )=True  Then lWire = Not lWire
If KeyDown( 57 )=True And k=1 Then JUMP=1 
If MouseHit(1)=True  Then   Fire

If KeyHit(56)
   CreateBullet( player )
EndIf

For b.Bullet=Each Bullet
   UpdateBullet( b )
Next



If EntityCollided (player,TypeAuto) 
  bmw2 = LoadMesh("bmw/bmw.b3d",player)
PositionEntity bmw2 ,0,-15,10
ScaleEntity bmw2 ,0.3,0.3,0.3
RotateEntity bmw2 ,0,180,0
;If EntityY(bmw2)<TerrainY(terrain,x#,y#,z#) Then EntityY(bmw2)=TerrainY(terrain,x#,y#,z#)

bmwyyy# = TerrainY(terrain,x#,y#,z#)
bmwyy#=TerrainY(terrain,x#,y#,z#)+15
ply#=bmwyy#+15
g#=0
PositionEntity player,EntityX(player),200,EntityZ(player)
PositionEntity bmw2,0,bmwyy#,10
  FreeEntity bmw

EndIf

   TurnEntity sp,0,-0.001,0

wind(1)



If  EntityCollided (player,TypeWall) Then g#=0 Else g#=0.3 


;wIf  EntityCollided (player,TypeWeapon)   Then PositionEntity mp5,EntityX(player)+3,JM#+8,EntityZ(player)

If jump=1 Then jm#=jm#+g#:k=0
If jm#>max_y# Then jump=0:k=2
If k=2 Then jm#=jm#-g#
If jm#<terra_y# Then jm#=terra_y#:k=1
If jump=0
   If jm#>terra_y# Then jm#=jm#-g#
End If

WireFrame lWire
x#=EntityX(player)
y#=EntityY(player)
z#=EntityZ(player)


terra_y#=TerrainY(terrain,x#,y#,z#)
max_y# = terra_y#+8

;RotateEntity player,ym#,xm#,zc#
PositionEntity player,EntityX(player),JM#+8,EntityZ(player)

wd=wd+1
If wd=4
  EntityTexture watermesh,watertexture,frame,1
  frame=frame+1
  If frame=22 Then frame=0
  wd=0
EndIf

UpdateWater()

If terra_y < 14.5
  CameraFogRange Camera,10,70
  AmbientLight 0,250,250
Else
  CameraFogRange Camera,10,1000
  AmbientLight 100,100,100
EndIf


RenderWorld
UpdateWorld
Text 0,0,"Use cursor keys to move about the terrain"
Text 400,300 ,"*"

Flip

Wend

End

;---------------------
Function UpdateWater()
For a=0 To VertexCount-1 
Freq#=MilliSecs()/waterflow
   Vertex(a)\z#=Sin(freq+Vertex(a)\x#*300+Vertex(a)\y#*400)*wavesize
   VertexCoords surface,a,Vertex(a)\x#,Vertex(a)\y#,Vertex(a)\z#
Next

UpdateNormals watermesh

End Function


;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Function Load_SkyBox( file$ )
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

	m=CreateMesh()

	;front face

	b=LoadBrush(file +"_Le.png",49 )::
	If Not B b=LoadBrush( file +"_Le.png",49 )::
	s=CreateSurface( m,b )
	AddVertex s,-1,+2,-1,0,0:AddVertex s,+1,+2,-1,1,0
	AddVertex s,+1,-0,-1,1,1:AddVertex s,-1,-0,-1,0,1
	AddTriangle s,0,1,2:AddTriangle s,0,2,3
	FreeBrush b
	
	;right face
	b=LoadBrush( file +"_fr.png",49 )::
	If Not B b=LoadBrush(file +"_fr.png",49 )::
	s=CreateSurface( m,b )
	AddVertex s,+1,+2,-1,0,0:AddVertex s,+1,+2,+1,1,0
	AddVertex s,+1,-0,+1,1,1:AddVertex s,+1,-0,-1,0,1
	AddTriangle s,0,1,2:AddTriangle s,0,2,3
	FreeBrush b
	
	;back face
	b=LoadBrush(file +"_ri.png",49 )::
	If Not B b=LoadBrush(file +"_ri.png",49 )::
	s=CreateSurface( m,b )
	AddVertex s,+1,+2,+1,0,0:AddVertex s,-1,+2,+1,1,0
	AddVertex s,-1,-0,+1,1,1:AddVertex s,+1,-0,+1,0,1
	AddTriangle s,0,1,2:AddTriangle s,0,2,3
	FreeBrush b
	;left face
	b=LoadBrush(file +"_bk.png",49 )::
	If Not B b=LoadBrush(file +"_bk.png",49 )::
	s=CreateSurface( m,b )
	AddVertex s,-1,+2,+1,0,0:AddVertex s,-1,+2,-1,1,0
	AddVertex s,-1,-0,-1,1,1:AddVertex s,-1,-0,+1,0,1
	AddTriangle s,0,1,2:AddTriangle s,0,2,3
	FreeBrush b
	;top face
	b=LoadBrush(file +"_UP.png",49 )::
	If Not B b=LoadBrush(file +"_UP.png",49 )::
	s=CreateSurface( m,b )
	AddVertex s,-1,+2,+1,0,1:AddVertex s,+1,+2,+1,0,0
	AddVertex s,+1,+2,-1,1,0:AddVertex s,-1,+2,-1,1,1
	AddTriangle s,0,1,2:AddTriangle s,0,2,3
	FreeBrush b
	FlipMesh m
	EntityFX m,9
	EntityOrder m,1
	RotateEntity m,0,90,0 
	Return m
End Function





Function Fire()
;Animate mp5,1,0.2,1,9
  shot = LoadSound("SHOOT1.WAV")
  PlaySound shot
  LoopSound shot
  CreateBullet( player )
For b.Bullet=Each Bullet
   UpdateBullet( b )
Next
End Function 


;*******Mouse Function************
Function CurveValue#(current#,destination#,curve)
current#=current#+((destination#-current#)/curve)
Return current#
End Function
;********************************


;--------------------
Function wind(speed#)
  For i=0 To grasscount-1
      x#=EntityX(grass(i))
      z#=EntityZ(grass(i))
      RotateEntity grass(i),0,grass_dir(i),Cos(windwave+z)*0.5
  Next
  windwave=(windwave+speed#)
End Function

Function CreateBullet.Bullet( player )
   b.Bullet=New Bullet
   b\time_out=150
   b\sprite=CopyEntity( bull_sprite,player )
EntityParent b\sprite,0
Return b
End Function

Function UpdateBullet( b.Bullet )
b\time_out=b\time_out-1
If (b\time_out=0) Or EntityCollided( b\sprite,TypeWall )
   FreeEntity b\sprite
   Delete b
   Return
EndIf
b\rot=b\rot+30
RotateSprite b\sprite,b\rot
MoveEntity b\sprite,0,0,3
End Function

Function Go()
bmw2 = LoadMesh("bmw/bmw.b3d",player)
PositionEntity bmw2 ,0,-15,10
ScaleEntity bmw2 ,0.3,0.3,0.3
RotateEntity bmw2 ,0,180,0
;If EntityY(bmw2)<TerrainY(terrain,x#,y#,z#) Then EntityY(bmw2)=TerrainY(terrain,x#,y#,z#)

bmwyyy# = TerrainY(terrain,x#,y#,z#)
bmwyy#=TerrainY(terrain,x#,y#,z#)-15
ply#=bmwyy#+15
g#=0
PositionEntity player,EntityX(player),200,EntityZ(player)
PositionEntity bmw2,0,bmwyy#,10


End Function
(Offline)
 
Ответить с цитированием
Старый 19.12.2007, 19:14   #2
IGR
Blitz's Shame !!
 
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений
(для 2,013 пользователей)
Re: Помогте с тачкой!

что бы "вместе" - юзай parententity car,player или parententity player, car
ну это смотря что к чему прикрепляеш !!
для того что бы "непроваливалась" - юзай collision !!
в это Мегакод и загленуть страшно !!
Укажи пожалуйста те строчки где ошибка !!
если вообще ошибки нет, то скажи что "я вот скопипастил чей-то код и незнаю как он работает" !! и что бы разобратся, в твоем случае, нужно учит все с начало !!
(Offline)
 
Ответить с цитированием
Старый 19.12.2007, 19:52   #3
Regfre
AnyKey`щик
 
Регистрация: 15.12.2007
Сообщений: 12
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Помогте с тачкой!

Код я сделал сам!
Я прикрепляю машину к игроку.
А вот с Коллизиеми самая проблема.Что бы игрок ходил по террайну сделал чтобы Yигрока=Yтеррайна+G ;G-при прыжке.
Из за этого(Наверное) колизия с игроком неработает в Y.И со всеми объектами к нему привязанными.Видел гдето такой способ решил также сделать.

Пробавал через ФУНКЦИЮ,но тогда нельзя игрока поднять.
А переделывать всё сначала нехочется.
(Offline)
 
Ответить с цитированием
Старый 19.12.2007, 20:24   #4
Trilliput
Знающий
 
Регистрация: 27.07.2006
Сообщений: 250
Написано 6 полезных сообщений
(для 7 пользователей)
Re: Помогте с тачкой!

товарищ ты бы хоть с медиа выкладывал, кто знает что ты там задумывал.
(Offline)
 
Ответить с цитированием
Старый 20.12.2007, 00:38   #5
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Re: Помогте с тачкой!

Const type_car = 1
Const Type_Level = 2

EntityType <>, Type_Car
EntityType <>, Type_Level

Collisions 1,2,2,2


Чтобы игрок двигался вместе с машиной, на время, когда он в машине, привязывай его к ней (EntityParent)

Выложи в архиве с медиа, иначе в этом коде углядеть что-то трудно.

По непонятным ф-ям смотри в хелп Блитза.

Я хочу чтобы машина перемещалась вместе сигроком и непроваливалась под землю.
Я хочу, чтобы машина перемещалась вместе с_игроком и не_проваливалась под землю.

И подучи немного Великий Могучий Русский Язык - язык интернационального общения!
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 20.12.2007, 15:09   #6
Regfre
AnyKey`щик
 
Регистрация: 15.12.2007
Сообщений: 12
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Помогте с тачкой!

Спасибо, вроде получилось.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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