Оператор ЭВМ
Регистрация: 16.01.2012
Сообщений: 30
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Вопросы про Xors3D
такой вопрос... создаю машинки:
;;;;FIRST CAR
first_car=xLoadAnimMesh("models\first_car.fbx")
xhideentity first_car
Global logoTexture = xLoadTexture("\textures\first_car_tex.jpg")
CreateTank(first_car, logoTexture, Rand(-200,300),40,Rand(-200,300), 1, 10, 2500, 20, 40,10)
For i=0 To 5
CreateTank(first_car, logoTexture, Rand(-200,300),40,Rand(-200,300), 0, 10, 2500, 20, 40,10)
Next
;;;;FIRST CAR
сама функция:

Function CreateTank(model, textureT,x#,y#,z#, is_player, hp, max_speed, step_speed, max_rotate_wheels,steer_step)
;create tank
;[Block]
tank.tank= New tank
tank\model = model
xEntityTexture tank\model, textureT
xPositionEntity(tank\model, x,y,z, True)
xEntityAddBoxShape tank\model, 300, 20,21,49
tank\is_player=is_player
tank\hp=hp
;VEHICLE
xEntityCreateVehicle(tank\model)
xEntityDisableSleeping(tank\model)
tank\max_speed = max_speed
tank\step_speed = step_speed
tank\cur_speed = 0
tank\max_rotate_wheels = max_rotate_wheels
tank\steer_step = steer_step
;VEHICLE end
;0 - pivot for hand
;1 - hand
;2 - pivot for weapon
;3 - weapon
;LEFT_HAND START
tank\left_weapon[0] = xFindChild(tank\model, "pivot2")
tank\left_weapon[1] = xLoadAnimMesh("models\hand.fbx")
xExtractAnimSeq tank\left_weapon[1], 0,100
xExtractAnimSeq tank\left_weapon[1], 100,200
;weapon
tank\left_weapon[3] = xLoadAnimMesh("models\axe.fbx")
tank\left_weapon[2] = xFindChild(tank\left_weapon[1], "Box001")
xPositionEntity (tank\left_weapon[3], xentityx(tank\left_weapon[2]), xentityy(tank\left_weapon[2]),xentityz(tank\left_weapon[2]))
xentityparent (tank\left_weapon[3], tank\left_weapon[2])
;weapon end
xScaleEntity tank\left_weapon[0], 1,1,1
xEntityParent (tank\left_weapon[2],xFindChild(tank\left_weapon[1], "bone004"))
xEntityParent (tank\left_weapon[1], tank\left_weapon[0], False)
xEntityTexture tank\left_weapon[0], logoTexture
;LEFT_HAND End
;Right_HAND START
tank\Right_weapon[0] = xFindChild(tank\model, "pivot1")
tank\Right_weapon[1] = xLoadAnimMesh("models\hand.fbx")
xExtractAnimSeq tank\right_weapon[1], 0,100
xExtractAnimSeq tank\right_weapon[1], 200,300
;weapon
tank\Right_weapon[3] = xLoadAnimMesh("models\axe.fbx")
tank\Right_weapon[2] = xFindChild(tank\Right_weapon[1], "Box001")
xPositionEntity (tank\Right_weapon[3], xentityx(tank\Right_weapon[2]), xentityy(tank\Right_weapon[2]),xentityz(tank\Right_weapon[2]))
xentityparent (tank\Right_weapon[3], tank\Right_weapon[2])
;weapon end
xScaleEntity tank\Right_weapon[0], 1,1,1
xEntityParent (tank\Right_weapon[2],xFindChild(tank\Right_weapon[1], "bone004"))
xEntityParent (tank\Right_weapon[1], tank\Right_weapon[0], False)
xEntityTexture tank\Right_weapon[0], logoTexture
;Right_HAND End
tank\target=0
number=number+1
tank\cur_number = number
;CUBE
;[Block]
;0 - left
;1 - right
;2 - center
;3 - first
tank\cube[2]=xcreatecube()
xEntityParent (tank\cube[2],tank\model, False)
xPositionEntity (tank\cube[2], xentityx(tank\model), xentityy(tank\model),xentityz(tank\model)-35, True)
xscaleentity tank\cube[2], 1,1,1
xentityalpha tank\cube[2],0;.3
tank\cube[0]=xcreatecube()
xPositionEntity tank\cube[0], xentityx(tank\model)+20, xentityy(tank\model),xentityz(tank\model)-35
xEntityParent tank\cube[0],tank\model
xscaleentity tank\cube[0], 1,1,1
xentityalpha tank\cube[0],0;.3
tank\cube[1]=xcreatecube()
xPositionEntity tank\cube[1], xentityx(tank\model)-20, xentityy(tank\model),xentityz(tank\model)-35
xEntityParent tank\cube[1],tank\model
xscaleentity tank\cube[1], 1,1,1
xentityalpha tank\cube[1],0;.3
tank\cube[3]=xcreatecube()
xPositionEntity tank\cube[3], xentityx(tank\model), xentityy(tank\model),xentityz(tank\model)-55
xEntityParent tank\cube[3],tank\model
xscaleentity tank\cube[3], 1,1,1
xentityalpha tank\cube[3],0;.3
;[End Block]
tank\b=xcreatecube();pick
xscaleentity tank\b, 12,6,17;12,6,25
xEntityParent tank\b,tank\model,False
xPositionEntity (tank\b, xentityx(tank\model), xentityy(tank\model),xentityz(tank\model), True)
xentityalpha tank\b,0;.3
xEntityPickMode tank\b,3
;[End Block]
;CREATE WHEELS
;[Block]
For l = 0 To 5
wheel.wheel = New wheel
If l=5 Then wheel\entity = xFindChild(tank\model, "wheel5")
If l=3 Then wheel\entity = xFindChild(tank\model, "wheel3")
If l=1 Then wheel\entity = xFindChild(tank\model, "wheel1")
If l=4 Then wheel\entity = xFindChild(tank\model, "wheel4")
If l=2 Then wheel\entity = xFindChild(tank\model, "wheel2")
If l=0 Then wheel\entity = xFindChild(tank\model, "wheel0")
xEntityParent wheel\entity, tank\model
xEntityTexture wheel\entity, wheelT
wheel\max_Rotation = 15000
xEntityAddWheel(tank\model, wheel\entity)
xEntityWheelSetConnectionPoint(tank\model, l, xEntityX(wheel\entity), xEntityY(wheel\entity), xEntityZ(wheel\entity))
xEntityWheelSetAxle(tank\model, l, -1.0, 0.0, 0.0)
xEntityWheelSetRadius(tank\model, l, 1.0)
xEntityWheelSetMaxSuspensionForce(tank\model, l, wheel\max_Rotation)
xEntityWheelSetSuspensionLength(tank\model, l, 1.5)
xEntityWheelSetSuspensionStiffness(tank\model, l, 3.8)
xEntityWheelSetSuspensionDamping(tank\model, l,2.22)
xEntityWheelSetSuspensionCompression(tank\model,l, 0.3)
xEntityWheelSetFriction(tank\model, l, 300)
xEntityWheelSetRollInfluence(tank\model, l, 0.18);
Next
;[End Block]
;CREATE WHEELS END
; tank creation end
SeedRnd xmillisecs()
End Function
получаю в итоге: все создаваемые машины появляются в одной и той же точке. Это решается, если вместо tank\model = model пишу tank\model = xCopyEntity(model). Но мне кажется, что в этом случае программа загружается дольше, чем должна. Можно как-то оптимизировать код?
|