nuclear | Дата: Четверг, 17 Июля 2008, 15:07 | Сообщение # 1 |
Бывалый
Группа: Участники
Сообщений: 73
Награды: 0
Замечания: 0%
Статус:
Профессия: Программер
| Code Graphics3D 1024,768,32,1 SetBuffer BackBuffer ()
PxCreateWorld(1, "кей") pxSetGravity(0,-9.8,0)
Global pobeda_1=LoadMesh(".\Cars\pobeda.b3d")
cam=CreateCamera () PositionEntity cam,0,40,-40 RotateEntity cam,20,0,0 sun=CreateLight() PositionEntity sun,15,66,15 plane=CreatePlane()
Function createcar() pobeda_entity=CopyMesh(pobeda_1) ScaleMesh pobeda_entity,5,5,5 RotateEntity pobeda_entity ,0,90,0 PositionEntity pobeda_entity ,0,7,0 pobeda_phys_entity=LoadMesh(".\Cars\pobeda_phys.b3d") ScaleMesh pobeda_phys_entity,5,5,5 RotateEntity pobeda_phys_entity ,0,90,0 PositionEntity pobeda_phys_entity ,0,7,0 EntityAlpha pobeda_phys_entity,0 pobeda_body=BodyCreateHull(pobeda_phys_entity, 100) pxBodySetPosition (pobeda_body, 0, 14 ,0) pxBodySetRotation (pobeda_body, 0, 90, 0) pxBodySetCMassLocalPosition(pobeda_body, 0, -4, 0)
;------- front wheel----------- Wheel_fr1_body = pxWheelAddToBody(pobeda_body, -4, -2, 8.5) pxWheelSetRadius(Wheel_fr1_body, 2) pxWheelSetSuspension(Wheel_fr1_body, 1, 200, 0.5) wheel_fr1_mesh = LoadMesh (".\cars\pobeda_wheel.b3d") RotateMesh wheel_fr1_mesh,0,180,0 ScaleEntity wheel_fr1_mesh,5,5,5
Wheel_fr2_body = pxWheelAddToBody(pobeda_body, 4, -2, 8.5) pxWheelSetRadius(Wheel_fr2_body, 2) pxWheelSetSuspension(Wheel_fr2_body, 1, 200, 0.5) wheel_fr2_mesh = LoadMesh (".\cars\pobeda_wheel.b3d") ScaleEntity wheel_fr2_mesh,5,5,5
;-------back wheel------------ Wheel_bac1_body = pxWheelAddToBody(pobeda_body, -4, -2, -6.5) pxWheelSetRadius(Wheel_bac1_body, 2) pxWheelSetSuspension(Wheel_bac1_body, 1, 200, 0.5) wheel_bac1_mesh = LoadMesh (".\cars\pobeda_wheel.b3d") RotateMesh wheel_bac1_mesh,0,180,0 ScaleEntity wheel_bac1_mesh,5,5,5
Wheel_bac2_body = pxWheelAddToBody(pobeda_body, 4, -2, -6.5) pxWheelSetRadius(Wheel_bac2_body, 2) pxWheelSetSuspension(Wheel_bac2_body, 1, 200, 0.5) wheel_bac2_mesh = LoadMesh (".\cars\pobeda_wheel.b3d") ScaleEntity wheel_bac2_mesh,5,5,5
pxWheelSetFrictionToSide(Wheel_bac1_body, 50000) pxWheelSetFrictionToSide(Wheel_bac2_body, 50000) End Function createcar()
;;create_map functions Dim cubes(30) For i=1 To 30 cubes(i)=CreateCube() PositionEntity cubes(i),1+i*-5,3,10 Next
cp1=CreateCube() MoveEntity cp1,-70,3,0 EntityColor cp1,255,0,0 Function create_map_1() End Function
;;other functions
;;END FUNCTIONS;;
;;run functions create_map_1()
ramp=CreateCube() ScaleEntity ramp,10,2,20 ramp_phys=pxbodycreatecube(10,2,20,0) pxbodysetposition(ramp_phys,-90,0,5) pxbodysetrotation(ramp_phys,0,2,-30)
;;end run Repeat ;;;Cicle!!!;;; If EntityDistance (pobeda_entity,cp1)<10 Textcp1=1
PointEntity cam,pobeda_entity pxBodySetEntity(pobeda_entity, pobeda_body) pxbodysetentity(ramp,ramp_phys)
If KeyDown (205) ang = ang+1 If Not KeyDown (205) If ang>0 ang=ang-1 EndIf
If KeyDown (203) ang = ang-1 ;Else ang=ang+1 If Not KeyDown (203) If ang<0 ang=ang+1 EndIf If KeyDown (200) motor = motor+5 If Not KeyDown (200) If motor>0 motor=0 ;motor=motor-1 EndIf
If KeyDown (208) motor = motor-5 If Not KeyDown (208) If motor<0 motor=0 ;motor+1 EndIf If motor>400 motor = 400 If motor<-200motor = -200 pxWheelSetMotorTorque(wheel_bac1_body, motor) pxWheelSetMotorTorque(wheel_bac2_body, motor) pxWheelSetMotorTorque(Wheel_fr1_body, motor) pxWheelSetMotorTorque(Wheel_fr2_body, motor)
If ang>30 ang = 30 If ang<-30 ang = -30 pxWheelSetSteerAngle(wheel_fr1_body, ang) pxWheelSetSteerAngle(wheel_fr2_body, ang)
pxWheelSetBrakeTorque(wheel_bac1_body, 1 ) pxWheelSetBrakeTorque(wheel_bac2_body, 1) If KeyDown (57) pxWheelSetBrakeTorque(wheel_bac1_body, 500) pxWheelSetBrakeTorque(wheel_bac2_body, 500) motor=0 EndIf
time=MilliSecs () pxRenderPhysic(60,0) pxBodySetEntity(pobeda_entity, pobeda_body)
pxWheelSetEntity(wheel_fr1_mesh, wheel_fr1_body, 1) pxWheelSetEntity(wheel_fr2_mesh, wheel_fr2_body, 1) pxWheelSetEntity(wheel_bac1_mesh, wheel_bac1_body, 1) pxWheelSetEntity(wheel_bac2_mesh, wheel_bac2_body, 1)
;Update_Px_Cube() New_time=MilliSecs ()-time
UpdateWorld() RenderWorld() frames=frames+1 If MilliSecs()-render_time=>1000 fps1=frames : frames=0 : render_time=MilliSecs() ;SetFont fntArial Text 10,10,"FPS: "+fps1+" dll time: "+New_time Text 10,30,"angle= "+ang+ " motor= "+ motor If Textcp1=1 Text 50,100,"Checkpoint 1" Flip 1
Until KeyHit(88) End Function BodyCreateHull%(mesh%, mass) Local nsurf = CountSurfaces(mesh) Local nvert = 0 For ns = 1 To nsurf Local surf = GetSurface(mesh,ns) nvert = nvert + CountVertices(surf) Next vbank = CreateBank(nvert*4*3) nv = 0 For ns = 1 To nsurf surf = GetSurface(mesh,ns) nvv = CountVertices(surf) For nvc = 0 To nvv - 1 PokeFloat vbank,nv*12+0,VertexX(surf,nvc) PokeFloat vbank,nv*12+4,VertexY(surf,nvc) PokeFloat vbank,nv*12+8,VertexZ(surf,nvc) nv = nv+1 Next Next Local bbb%= pxBodyCreateHull(vbank, nvert, mass) FreeBank vbank Return bbb End Function если делаю без функции(createcar() ) то все ок,а если с функцией (как написано выше) то выводит ошибку при обращении к pobeda_entity в цикле,что pobeda_entity не найдена Че делать то?Обьясните ламаку
Сообщение отредактировал nuclear - Пятница, 18 Июля 2008, 12:31 |
|
| |
nuclear | Дата: Пятница, 18 Июля 2008, 16:08 | Сообщение # 8 |
Бывалый
Группа: Участники
Сообщений: 73
Награды: 0
Замечания: 0%
Статус:
Профессия: Программер
| Сразу гавараю,если я щяс туплю - не бейти,у меня башка чет ваще не варит седня) Code Graphics3d 640,480,32,1 setBuffer backbuffer()
cam=createcamera()
l=createlight()
cube=createcube() moveentity cube,0,0,10
check=createsphere()
repeat
if entitydistance(cube,check)<5 checkpoint=checkpoint+1
updateworld ... и тд) Вотс,когда кубик рядом с checkpoint увеличивается оч быстро.А мне надо чтоб когда entitydistance(cube,check)<5 то чекпоинт был checkpoint=checkpoint+1,если мы еще раз приближаемся то снова checkpoint=checkpoint+1.Теперь на примере:кубиком подьехали к сфере чекпоинт стало 1,уехали,снова приехали чекпоинт стало 2 и тд.Как сделать?
|
|
| |