По меню:
создай квад:
Function CreatePlane_m(File$,fl)
Local texture,scx#,scy#
mesh=CreateMesh()
surf=CreateSurface(mesh)
AddVertex surf,-1,1,0,0,0:AddVertex surf,1,1,0,1,0
AddVertex surf,1,-1,0,1,1:AddVertex surf,-1,-1,0,0,1
AddTriangle surf,0,1,2:AddTriangle surf,0,2,3
UpdateNormals mesh
texture=LoadTexture ( File$,fl)
img=LoadImage(File$)
scx#=ImageWidth (img)
scy#=ImageHeight (img)
ScaleMesh mesh,scx/256,scy/256,1
EntityTexture mesh,texture
FreeTexture texture
FreeImage img
Return mesh
End Function
Потом помести перед камерой, и делай с ним что хочешь.
Например:
Function CreateMenu()
menu_stat=0
menu_tip$=""
CameraProjMode cam,0
;-------------Camera---------------
cam_m=CreateCamera()
CameraZoom cam_m,1.4
CameraRange cam_m,.5,100
MoveEntity cam_m,0,0,-5
light_m = CreateLight()
;--------------------------
cursor=LoadImage("menu\cursor.png")
ScaleImage cursor,fx,fx
menu_tip$="glav"
;--------------glav-------------------------
LoadMenu_m("play.png","glav","play","play",0,1)
LoadMenu_m("options.png","glav","options","options",0,.5)
LoadMenu_m("credits.png","glav","credits","glav",0,0)
LoadMenu_m("exit.png","glav","exit","exit",0,-.5)
и тд
Function LoadMenu_m(img$,tip$,mip$,sip$,x#,y#)
m.menu=New menu
m\tip$=tip$
m\mip$=mip$
m\sip$=sip$
m\en= CreatePlane_m("menu\"+img$,2)
m\x=x
m\y=y
PositionEntity m\en,m\x,m\y,0
NameEntity m\en,Handle(m)
Return m\en
End Function
Function UpdateMenu()
;===============================================================================
While Not menu_stat<>0
Delay 1
;-------------
Repeat
elapsed = MilliSecs () - Time
Until elapsed
ticks = elapsed / period
tween# = Float (elapsed Mod period) / Float (period)
For framelimit = 1 To ticks
If framelimit = ticks CaptureWorld
Time = Time + period
UpdateWorld
;---------------------------------------------------------------------------
MHIT=MouseHit(1)
MHIT2=MouseHit(2)
MDOW=MouseDown(1)
mox=MouseX()
moy=MouseY()
mxs#=MouseXSpeed()
mys#=MouseYSpeed()
;----------------------------------
ent=CameraPick (cam_m,mox,moy)
;--------------------------------------
For m.menu=Each menu
If m\stateD=0
PositionEntity m\en,m\x+m\xs,m\y+m\ys,0
RotateEntity m\en,m\ts,m\rs,0
m\xs=m\xs+m\xa
m\xa=m\xa+(m\x-EntityX(m\en))*0.04
m\xa=m\xa*.9
m\xs=m\xs*.9999
m\ys=m\ys+m\ya
m\ya=m\ya+(m\y-EntityY(m\en))*0.04
m\ya=m\ya*.9
m\ys=m\ys*.9999
m\rs=m\rs+m\ra
m\ra=m\ra+(-EntityYaw(m\en))*0.04
m\ra=m\ra*.9
m\rs=m\rs*.9999
m\ts=m\ts+m\ta
m\ta=m\ta+(-EntityPitch(m\en))*0.04
m\ta=m\ta*.9
m\ts=m\ts*.9999
If m\en=ent
m\xs=m\xs+mxs*0.0004
m\ys=m\ys+mys*0.0004
m\rs=m\rs+mxs*0.04
m\ts=m\ts+mys*0.2
If mhit
If m\mip$="video"
wig=GraphicsWidth()
EndIf
;==================
;If m\mip$<>"apple" And m\mip$<>"left_a" And m\mip$<>"right_a" And m\mip$<>"left_m" And m\mip$<>"right_m"
menu_tip$=m\sip$
;EndIf
;------------video-----------------
If m\tip$="video" And m\mip$<>"options"And m\mip$<>"apple"
wig= m\mip$
Else
If m\mip$="apple"
Select wig
Case 1024
hei=768
Case 800
hei=600
Case 640
hei=480
End Select
Save_cfg()
menu_stat=1
EndIf
EndIf
;------------------audio---------------
If m\tip$="audio"
If m\mip$="left_a"
If l_audio>0 l_audio=l_audio-10
EndIf
If m\mip$="right_a"
If l_audio<100 l_audio=l_audio+10
EndIf
If m\mip$="left_m"
If l_music>0 l_music=l_music-10
EndIf
If m\mip$="right_m"
If l_music<100 l_music=l_music+10
EndIf
EndIf
;------------------effect---------------
If m\tip$="effect"
If m\mip$="options"
Save_cfg()
Else
effect=m\mip$
EndIf
EndIf
;-------------------------play-----------------
If menu_tip$="play"
If m\mip$="1" Or m\mip$="2" Or m\mip$="3"
mode_game=mode_game+1
If mode_game>3 mode_game=1
EndIf
EndIf
;---------------------------------------------
stateMenu()
;------------------select-------------
If menu_tip$="exit"
menu_stat=10
EndIf
;--------------play---------
If menu_tip$="play"
;menu_stat=4
EndIf
;------------------------------------
EndIf
EndIf
Else
RotateEntity m\en,m\stateD,0,0
EndIf
If m\stateD>m\state m\stateD=m\stateD-10
If m\stateD<m\state m\stateD=m\stateD+10
Next
;----------------------------------
Next
RenderWorld
DrawImage cursor,mox,moy
Flip 0
Wend
End Function
Примерно так.
кнопки реагируют на мышку и переворачиваются при клике
Камера должна быть без регулировок сразу на месте.
Минимум управления делай. Юзеры на таких играх не будут искать клавиш и тд.
подними камеру повыше, чтобы было видно все поле (или 2\3 хотя бы)
Сделай повороты камеры плавней.
Процедурную графику лучше не юзай, учись моделить и текстурить в максе - на такую простую графику научишся за пару дней.
Используй несколько материалов на кубиках: например деревянный ящик обшитый полосами из металла. При взрыве пусть разлетается щепками