Показать сообщение отдельно
Старый 01.04.2006, 20:34   #144
tormoz
Гигант индустрии
 
Аватар для tormoz
 
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений
(для 4,437 пользователей)
По меню:
создай квад:

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 хотя бы)
Сделай повороты камеры плавней.
Процедурную графику лучше не юзай, учись моделить и текстурить в максе - на такую простую графику научишся за пару дней.
Используй несколько материалов на кубиках: например деревянный ящик обшитый полосами из металла. При взрыве пусть разлетается щепками
__________________
(Offline)
 
Ответить с цитированием