CostUm | Дата: Среда, 06 Мая 2009, 20:30 | Сообщение # 24 |
MegaNoob on Igrostroenie.ru
Группа: Участники
Сообщений: 269
Награды: 0
Замечания: 40%
Статус:
| карОч вот код, разберись чё там могло помешать: Code Graphics3D 1280,1024,32,1 SetBuffer BackBuffer()
Global user Global camera Global fntArial
fntArial=LoadFont("Arial Cry",24,False,False,False)
Const G#=0.001
Const USERT=1;for user Const TERRT=2;for terrain Const SHOTT=3;for shot Const BOTT=4;for bot Const BORDERT=5;for box
Global jump_bool Global user_time Global user_vy# Global sphere Global cone Global cube
Global pricel=LoadImage("FPS-Crosshair.png") Global shot_sprite=LoadSprite("FPS-Shot.png")
zdorov=100
Type shot Field entity Field dist# Field time End Type
Type bot Field entity Field time Field Survivability End Type
;???????? ?????? Function create_user(x#=0,y#=10,z#=0)
MidHandle pricel MaskImage pricel,255,255,255 user=CreateSphere() k#=3 ScaleEntity user,k#,k#,k# EntityRadius user,k# camera=CreateCamera(user) CameraRange camera,0.1,10000 PositionEntity user,x#,y#,z# EntityType user,USERT
fs=LoadTexture ("fs.jpg") sphere=LoadAnimMesh("f.b3d") LoadAnimSeq sphere, "fs.b3d" ScaleEntity sphere, 2,2,2 RotateEntity sphere,0,180,0 PositionEntity sphere, 0,0,2.6 EntityTexture sphere,fs ShowEntity sphere
bs=LoadTexture ("bs.jpg") cone=LoadAnimMesh("b.b3d") LoadAnimSeq cone, "bs.b3d" ScaleEntity cone, 2,2,2 RotateEntity cone,0,180,0 PositionEntity cone, 0,0,2.6 EntityTexture cone,bs HideEntity cone
cube=CreateCube() ScaleEntity cube, 2,2,2 RotateEntity cube,0,180,0 PositionEntity cube, 0,0,2.6 HideEntity cube
End Function
Const Spd#=0.5, trans=10, lol=0, Forward=1, Right=2, Left=3, nazad=4
;?????????? ?????? Function update_user() ;= If user_time=0 user_time=MilliSecs() new_time=MilliSecs() delta_t=new_time-user_time user_time=new_time ;= V#=0.02*delta_t u#=70;?????????? ???? TurnEntity camera,MouseYSpeed(),0,0 TurnEntity user,0,-MouseXSpeed(),0 If KeyDown(30)=1 Then MoveEntity user,-V#,0,0 If KeyDown(32)=1 Then MoveEntity user,V#,0,0 If KeyDown(17)=1 Then MoveEntity user,0,0,+V# If KeyDown(31)=1 Then MoveEntity user,0,0,-V# MoveMouse GraphicsWidth()*0.5,GraphicsHeight()*0.5 If Abs(EntityPitch#(camera))>u# RotateEntity camera,u#*Sgn(EntityPitch#(camera)),0,0 If MouseHit(1) create_shot(EntityX(user),EntityY(user),EntityZ(user),EntityPitch(camera),EntityYaw(user),0) If MouseDown(2) create_shot(EntityX(user),EntityY(user),EntityZ(user),EntityPitch(camera),EntityYaw(user),0) If KeyDown(18) Then If AnimSeq(sphere)<>Forward Then Animate sphere,1,Spd,Forward,trans And AnimSeq(cone)<>Forward Animate cone,1,Spd,Forward,trans
Else If KeyDown(32) Then If AnimSeq(sphere)<>Right Then Animate sphere,1,Spd,Right,trans
Else If KeyDown(30) Then If AnimSeq(sphere)<>Left Then Animate sphere,1,Spd,Left,trans
Else If KeyDown(31) Then If AnimSeq(sphere)<>nazad Then Animate sphere,1,Spd,nazad,trans
Else
If AnimSeq(sphere)<>lol Then Animate sphere,1,Spd,lol,trans And AnimSeq(cone)<>lol Animate cone,1,Spd,lol,trans
EndIf
If KeyHit(2) ShowEntity cone HideEntity cube HideEntity sphere ElseIf KeyHit(3) HideEntity cone ShowEntity cube HideEntity sphere ElseIf KeyHit(4) HideEntity cone HideEntity cube ShowEntity sphere EndIf
;?????? pick_ent=LinePick(EntityX(user,1),EntityY(user,1),EntityZ(user,1),0,-3.6,0) TranslateEntity user,0,user_vy#*delta_t,user_vy#*0.01,True If pick_ent jump_bool=False user_vy=0 TranslateEntity user,0,-1,0,True Else jump_bool=True user_vy#=user_vy#-G#*delta_t;v1=v2-a*t EndIf
;;; If KeyHit(57) And jump_bool=False Then user_vy#=1 End Function
Function create_Shot(x#,y#,z#,pitch#,yaw#,roll#) s.shot=New shot s\entity=CopyEntity(shot_sprite) EntityType s\entity,SHOTT PositionEntity s\entity,x#,y#,z#,1 RotateEntity s\entity,pitch#,yaw#,roll#,1 Return True End Function
Function update_shot() v#=0.1 max_dist#=1000 For a.shot=Each shot ;= If a\time=0 a\time=MilliSecs() new_time=MilliSecs() delta_t=new_time-a\time a\time=new_time vs#=v*delta_t ;= MoveEntity a\entity,0,0,vs# a\dist#=a\dist#+vs# bot_h=EntityCollided(a\entity,BOTT) If a\dist#>max_dist# FreeEntity a\entity Delete a ElseIf EntityCollided(a\entity,TERRT)<>0 FreeEntity a\entity Delete a ElseIf bot_h<>0 FreeEntity a\entity Delete a bhandle=EntityName(bot_h) bc.bot=Object.bot(bhandle) bc\Survivability=bc\Survivability-16 If bc\Survivability<=0 Delete bc FreeEntity bot_h create_bot(EntityX(user)+Rnd(-100,100),2,EntityZ(user)+Rnd(-100,100)) EndIf EndIf Next End Function
Function create_bot(x#,y#,z#) b.bot=New bot b\Survivability=100 b\entity=CreateSphere() EntityType b\entity,BOTT PositionEntity b\entity,x#,y#,z# NameEntity b\entity,Handle(b) Return True End Function
Function update_bot() v#=0.01 For a.bot=Each bot ;= If a\time=0 a\time=MilliSecs() new_time=MilliSecs() delta_t=new_time-a\time a\time=new_time ;= PointEntity a\entity,user MoveEntity a\entity,0,0,v#*delta_t ;?????? TranslateEntity user,0,-G#*delta_t,0 Next End Function
;???????? ???????? ???? Function create_world() light=CreateLight() RotateEntity light,90,0,0 HideEntity shot_sprite terrain=CreatePlane() tertex=LoadTexture("FPS-Terrain.jpg") ScaleTexture tertex,10,10 EntityTexture terrain,tertex FreeTexture tertex EntityType terrain,TERRT EntityPickMode terrain,2 create_user() sky=MakeSkyBox("FPS-Sky") ScaleEntity sky,150,150,150 border=MakeBox() ScaleEntity border,140,140,140 EntityAlpha border,0 EntityType border,BORDERT c_bot=Input("input Amount") For i=1 To c_bot create_bot(Rnd(-100,100),2,Rnd(-100,100)) Next Collisions USERT,BORDERT,2,1 Collisions USERT,TERRT,2,3 Collisions SHOTT,TERRT,2,1 Collisions BOTT,TERRT,2,3 Collisions BOTT,USERT,2,3 Collisions BOTT,BOTT,2,3 Collisions USERT,BOTT,2,3 Collisions SHOTT,BOTT,2,1 End Function
Function MakeSkyBox( file$ )
m=CreateMesh() ;front face b=LoadBrush( file$+"FR.jpg",49 ) s=CreateSurface( m,b ) AddVertex s,-1,+1,-1,0,0:AddVertex s,+1,+1,-1,1,0 AddVertex s,+1,-1,-1,1,1:AddVertex s,-1,-1,-1,0,1 AddTriangle s,0,1,2:AddTriangle s,0,2,3 FreeBrush b ;right face b=LoadBrush( file$+"LF.jpg",49 ) s=CreateSurface( m,b ) AddVertex s,+1,+1,-1,0,0:AddVertex s,+1,+1,+1,1,0 AddVertex s,+1,-1,+1,1,1:AddVertex s,+1,-1,-1,0,1 AddTriangle s,0,1,2:AddTriangle s,0,2,3 FreeBrush b ;back face b=LoadBrush( file$+"BK.jpg",49 ) s=CreateSurface( m,b ) AddVertex s,+1,+1,+1,0,0:AddVertex s,-1,+1,+1,1,0 AddVertex s,-1,-1,+1,1,1:AddVertex s,+1,-1,+1,0,1 AddTriangle s,0,1,2:AddTriangle s,0,2,3 FreeBrush b ;left face b=LoadBrush( file$+"RT.jpg",49 ) s=CreateSurface( m,b ) AddVertex s,-1,+1,+1,0,0:AddVertex s,-1,+1,-1,1,0 AddVertex s,-1,-1,-1,1,1:AddVertex s,-1,-1,+1,0,1 AddTriangle s,0,1,2:AddTriangle s,0,2,3 FreeBrush b ;top face b=LoadBrush( file$+"UP.jpg",49 ) s=CreateSurface( m,b ) AddVertex s,-1,+1,+1,0,1:AddVertex s,+1,+1,+1,0,0 AddVertex s,+1,+1,-1,1,0:AddVertex s,-1,+1,-1,1,1 AddTriangle s,0,1,2:AddTriangle s,0,2,3 FreeBrush b
ScaleMesh m,100,100,100 FlipMesh m EntityFX m,9 EntityOrder m,10 Return m End Function
Function MakeBox()
m=CreateMesh() ;front face s=CreateSurface( m ) AddVertex s,-1,+1,-1,0,0:AddVertex s,+1,+1,-1,1,0 AddVertex s,+1,-1,-1,1,1:AddVertex s,-1,-1,-1,0,1 AddTriangle s,0,1,2:AddTriangle s,0,2,3 ;right face s=CreateSurface( m ) AddVertex s,+1,+1,-1,0,0:AddVertex s,+1,+1,+1,1,0 AddVertex s,+1,-1,+1,1,1:AddVertex s,+1,-1,-1,0,1 AddTriangle s,0,1,2:AddTriangle s,0,2,3 ;back face s=CreateSurface( m ) AddVertex s,+1,+1,+1,0,0:AddVertex s,-1,+1,+1,1,0 AddVertex s,-1,-1,+1,1,1:AddVertex s,+1,-1,+1,0,1 AddTriangle s,0,1,2:AddTriangle s,0,2,3 ;left face s=CreateSurface( m ) AddVertex s,-1,+1,+1,0,0:AddVertex s,-1,+1,-1,1,0 AddVertex s,-1,-1,-1,1,1:AddVertex s,-1,-1,+1,0,1 AddTriangle s,0,1,2:AddTriangle s,0,2,3 ;top face s=CreateSurface( m) AddVertex s,-1,+1,+1,0,1:AddVertex s,+1,+1,+1,0,0 AddVertex s,+1,+1,-1,1,0:AddVertex s,-1,+1,-1,1,1 AddTriangle s,0,1,2:AddTriangle s,0,2,3
ScaleMesh m,100,100,100 FlipMesh m EntityFX m,9 EntityOrder m,10 Return m End Function
;??????? ??????????? ;-------------------------------- create_world()
;MAIN LOOP While Not KeyHit(1)=1 update_user() update_shot() update_bot() UpdateWorld() RenderWorld() DrawImage pricel,MouseX(),MouseY() Text 10,10,"jump_bool="+jump_bool If EntityCollided (user,bott) zdorov=zdorov-1 SetFont fntArial Text 280,47,"Health="+zdorov If zdorov<105 Else End EndIf
Flip
Wend
End
|
|
| |
VitaliSimus | Дата: Суббота, 30 Мая 2009, 21:30 | Сообщение # 32 |
Начинающий
Группа: Пользователи
Сообщений: 16
Награды: 0
Замечания: 0%
Статус:
Профессия: Моделлер , немного программист
Проектов: 2 в разработке
| Люди!!! Помогите!!! Меня этот AlignToVector уже достал! Игрок (красный овал), при нажатие (W,A,S,D) следит за маркером управления(зеленый куб) и набирает скорость. Игрок движется только по плоскости, вертикально он не должен, но когда например он смотрит влево и ты нажимаеш D то он по идеи должен начать разворот либо в лево либо вправо чтоб смотреть на маркер, но!!! Это сволочь переворачивается вверх тормашкой. И т.д. Как это исправить????????????? Вот код, если запустите то сами увидите проблему: Code Graphics3D 1280,1024,32,1 SetBuffer BackBuffer() MoveMouse 640,512
Global GameScr=0 Global Quit=False Global cursur_status=0
Global FontV26=LoadFont("Verdana",26) Global FontV40=LoadFont("Verdana",40) Global FontV60=LoadFont("Verdana",60)
Global CURSOR=LoadImage("red_pointer.bmp") MaskImage cursor,255,255,255
Global worldpivot=CreatePivot()
Global players.player
Global hf_a_model=CreateSphere(16,WorldPivot)
HideEntity hf_a_model
Global mark_z# Global mark_x# Global speed#
Type player Field Pivot Field Objects Field CameraPivot Field Camera Field cursur_status=0 Field mark_x#=0 Field mark_z#=0 Field name$ Field marker Field metka End Type
;******************************** cikl ************************** While Not KeyHit(1) ;******************screen******************** Select GameScr Case 0 UpdateStartScreen() Case 1 UpdateGame() End Select
UpdateWorld RenderWorld DrawImage cursor,MouseX(),MouseY()
Flip Wend ;**************************** end cikl ******************** ;**************************** function ******************** ;**************************создание игрока***************************** Function CREATE_player.player(xp=0,yp=0,zp=0) Local e1.player=New player e1\Pivot=CreatePivot() e1\Objects=CopyEntity(hf_a_model,e1\Pivot) ScaleEntity e1\Objects,1,1,5 EntityColor e1\Objects,256,1,1 TurnEntity e1\Objects,0,180,0 e1\marker=CreateCube() ScaleEntity e1\marker ,1,1,1 EntityColor e1\marker ,1,256,1 PositionEntity e1\Pivot,x,y,z PositionEntity e1\marker,x,y,z e1\CameraPivot=CreatePivot() PositionEntity e1\CameraPivot,x,y,z e1\Camera=CreateCamera(e1\CameraPivot) CameraRange e1\Camera,1,10000 PositionEntity e1\Camera,0,100,-80 TurnEntity e1\Camera,45,0,0 CameraZoom e1\Camera,2 Return e1 End Function
;**************************обновление игры***************************** Function UpdateGame()
If KeyHit(1) Then Quit=True
x=MouseX() y=MouseY()
mxs=MouseXSpeed() mys=MouseYSpeed() mzs=MouseZSpeed()*20
;********************** end camera control ********************** For e1.player=Each player PositionEntity e1\CameraPivot,EntityX(e1\Pivot,1),EntityY(e1\Pivot,1),EntityZ(e1\Pivot,1),1
PositionEntity e1\marker,EntityX(e1\Pivot,1)+mark_x#,EntityY(e1\Pivot,1),EntityZ(e1\Pivot,1)+mark_z#,1
If KeyDown(17) Then mark_z#=30 Else mark_z#=0 EndIf If KeyDown(30) Then mark_x#=-30 Else mark_x#=0 EndIf If KeyDown(31) Then mark_z#=-30 EndIf If KeyDown(32) Then mark_x#=30 EndIf
;********************** move to marker ************************* xt#=EntityX#(e1\marker) zt#=EntityZ#(e1\marker) xl#=EntityX#(e1\Pivot) zl#=EntityZ#(e1\Pivot) cx#=xt-xl cz#= zt-zl
If EntityDistance (e1\Pivot,e1\marker)>4 AlignToVector e1\Pivot,cx,0,cz,0,.01 MoveEntity e1\Pivot,0,0,speed# If EntityDistance (e1\Pivot,e1\marker)>20 speed#=speed#+0.02 If EntityDistance (e1\Pivot,e1\marker)<20 speed#=speed#-0.02 If speed#>0.8 Then speed#=0.8 If speed#<0.02 Then speed#=0
Next
End Function ;**************************окружение***************************** Function CreateEnveroument() LIGHT=CreateLight() PLANE=CreatePlane() ScaleEntity PLANE ,1,1,1 PositionEntity PLANE ,0,-10,0 EntityPickMode(plane,2) EntityType PLANE,2 EntityColor PLANE,1,1,256
End Function ;**************************обновление начального экрана***************************** Function UpdateStartScreen() aShift=0 If RectsOverlap(MouseX(),MouseY(),1,1,GraphicsWidth()/2-50,GraphicsHeight()*0.32-12,100,32) aShift=1 If RectsOverlap(MouseX(),MouseY(),1,1,GraphicsWidth()/2-50,GraphicsHeight()/2-12,100,32) aShift=2 Cls SetFont FontV60 Color 0,0,255 Text GraphicsWidth()/2,GraphicsHeight()*0.12,"000",True,True SetFont FontV26 If aShift=1 Color 0,255,0 Else Color 255,0,0 Text GraphicsWidth()/2,GraphicsHeight()*0.32, "начать",True,True If aShift=2 Color 0,255,0 Else Color 255,0,0 Text GraphicsWidth()/2,GraphicsHeight()/2, "выход",True,True
If MouseHit(1) Select aShift Case 1 GameScr=1 CREATE_player() CreateEnveroument() Case 2 Quit=True End Select EndIf End Function
Сообщение отредактировал VitaliSimus - Суббота, 30 Мая 2009, 21:31 |
|
| |