Gravity by BigMax16th Jan 2004 11:08
|
---|
Summary A simple test 4 use a Gravity. Description Use Max 10 Object. Code ` This code was downloaded from The Game Creators ` It is reproduced here with full permission ` http://www.thegamecreators.com REM Progetto: Test Gravità REM Creato: 12/01/2004 10.20.41 REM REM ***** File Sorgente Principale ***** REM Type Oggetto NObj As Byte PX As Float PY As Float PZ As Float RX As Float RY As Float RZ As Float Size As Float ForzaX As Float ForzaY As Float ForzaZ As Float Peso As Float Rimbalzo As Float EndType Global Dim Oggetti(10) As Oggetto rem Sync On rem Sync Rate 60 Set window on Set window size 640,480 Set window title "Test" Set window layout 1,1,0 Autocam off Set Camera Range 1,5000 Fog On Fog Distance 4000 Fog color rgb(128,128,128) Hide mouse Load Image "Objsand1.bmp",1 Load Image "Objmetal1.bmp",2 Rem World Make Matrix 1,3000,3000,32,32 prepare matrix texture 1,1,1,1 position matrix 1,-1500,0,-1500 Rem World Rem Create Object 1 Make object sphere 1,50 Texture Object 1,2 Position Object 1,0,0,0 Oggetti(1).NObj=1 Oggetti(1).PX=0 Oggetti(1).PY=0 Oggetti(1).PZ=0 Oggetti(1).RX=0 Oggetti(1).RY=0 Oggetti(1).RZ=0 Oggetti(1).ForzaX=0 Oggetti(1).ForzaY=100 Oggetti(1).ForzaZ=0 Oggetti(1).Size=50 Oggetti(1).Peso=1 Oggetti(1).Rimbalzo=1.4 rem End Create Object 1 Position Camera 0,500,500,500 Point Camera 0,Oggetti(1).PX,Oggetti(1).PY,Oggetti(1).PZ rem set camera to follow object position x(1),object position y(1),object position z(1),180,10,10,50,0 Gravita#=0.5 Attrito#=0.05 Do For T=1 to 10 If Oggetti(T).NObj>0 and (Oggetti(T).PY>Oggetti(T).Size/2) Or (Oggetti(T).ForzaX>0) Or (Oggetti(T).ForzaZ>0) If Oggetti(T).ForzaX>0 Then Oggetti(T).ForzaX=Oggetti(T).ForzaX-Attrito# If Oggetti(T).PY>Oggetti(T).Size/2 Then Oggetti(T).ForzaY=Oggetti(T).ForzaY-(Gravita#*Oggetti(T).Peso) If Oggetti(T).ForzaZ>0 Then Oggetti(T).ForzaZ=Oggetti(T).ForzaZ-Attrito# rem If Oggetti(T).Forza<-Gravita# Then Oggetti(T).Forza=-Gravita# Oggetti(T).PX=Oggetti(T).PX+Oggetti(T).ForzaX Oggetti(T).PY=Oggetti(T).PY+Oggetti(T).ForzaY Oggetti(T).PZ=Oggetti(T).PZ+Oggetti(T).ForzaZ Oggetti(T).RX=Oggetti(T).RX-Oggetti(T).ForzaZ rem Oggetti(T).RY=Oggetti(T).RY+Oggetti(T).ForzaY Oggetti(T).RZ=Oggetti(T).RZ-Oggetti(T).ForzaX If Oggetti(T).PY<Oggetti(T).Size/2 If Abs(Oggetti(T).ForzaY)>Gravita#*Oggetti(T).Peso Oggetti(T).PY=(Oggetti(T).Size/2)+0.01 Oggetti(T).ForzaY=abs(Oggetti(T).ForzaY/Oggetti(T).Rimbalzo) Else Oggetti(T).ForzaY=0 Oggetti(T).PY=(Oggetti(T).Size/2) EndIf EndIf Position Object Oggetti(T).NObj,Oggetti(T).PX,Oggetti(T).PY,Oggetti(T).PZ Rotate Object Oggetti(T).NObj,Oggetti(T).RX,Oggetti(T).RY,Oggetti(T).RZ Point Camera 0,Oggetti(T).PX,Oggetti(T).PY,Oggetti(T).PZ EndIf Next T Loop |