Python Vehicle Script

From Physics Simulation Wiki

Jump to: navigation, search


                                      

#Bullet Vehicle Simulation Test
#requires latest 2.42 (pre) release


import PhysicsConstraints
import GameLogic

cont = GameLogic.getCurrentController()
chassis  = cont.getOwner()

#keep the vehicle active, otherwise simulation stops:
chassis.applyImpulse([0.,0.,0.],[0.,0.,0.])
PhysicsConstraints.setDebugMode(1)

#print dir(PhysicsConstraints)

if (chassis.init == 0):
	chassis.init = 1
	physicsid = chassis.getPhysicsId()
	vehicle = PhysicsConstraints.createConstraint(physicsid,0,11)
	chassis.cid = vehicle.getConstraintId()
	print chassis.cid
	vehicle = PhysicsConstraints.getVehicleConstraint(chassis.cid)
	attachHeightLocal = 0.

	waX = chassis.wheelAttachX
	
	wheelAttachPosLocal = [waX ,2.0, attachHeightLocal]
	wheelAttachDirLocal = [0,0,-1]
	wheelAxleLocal = [-1,0,0]
	suspensionRestLength = 0.8
	wheelRadius = 0.5			
	hasSteering = 1
	act0 = cont.getActuator("wheel0")
	wheel0 = act0.getOwner()
	vehicle.addWheel(wheel0,wheelAttachPosLocal,wheelAttachDirLocal,wheelAxleLocal,suspensionRestLength,wheelRadius,hasSteering)

	act1 = cont.getActuator("wheel1")
	wheel1 = act1.getOwner()
	wheelAttachPosLocal = [-waX ,2.0, attachHeightLocal]
	vehicle.addWheel(wheel1,wheelAttachPosLocal,wheelAttachDirLocal,wheelAxleLocal,suspensionRestLength,wheelRadius,hasSteering)

	hasSteering = 0
	wheelAttachPosLocal = [waX,-1.7, attachHeightLocal]

	act2 = cont.getActuator("wheel2")
	wheel2 = act2.getOwner()
	vehicle.addWheel(wheel2,wheelAttachPosLocal,wheelAttachDirLocal,wheelAxleLocal,suspensionRestLength,wheelRadius,hasSteering)

	wheelAttachPosLocal = [-waX ,-1.7, attachHeightLocal]

	act3 = cont.getActuator("wheel3")
	wheel3 = act3.getOwner()
	vehicle.addWheel(wheel3,wheelAttachPosLocal,wheelAttachDirLocal,wheelAxleLocal,suspensionRestLength,wheelRadius,hasSteering)
	
	
else:
	
	vehicle = PhysicsConstraints.getVehicleConstraint(chassis.cid)
	vehicle.setSteeringValue(chassis.steer,0)
	vehicle.setSteeringValue(chassis.steer,1)
	vehicle.applyEngineForce(chassis.force*.4,0)
	vehicle.applyEngineForce(chassis.force*.4,1)
	vehicle.applyEngineForce(chassis.force*.4,2)
	vehicle.applyEngineForce(chassis.force*.4,3)


	#the following lines are not necessary:s
	act0 = cont.getActuator("wheel0")
	wheel0 = act0.getOwner()
	pos = vehicle.getWheelPosition(0)
	#don't need to do this here, the vehicle updates the wheels automatically
	#wheel0.setPosition(pos)
	orn = vehicle.getWheelOrientationQuaternion(0)	
	#wheel0.setOrientation(orn)

	influence = 0.1
	vehicle.setRollInfluence(influence,0)
	vehicle.setRollInfluence(influence,1)
	vehicle.setRollInfluence(influence,2)
	vehicle.setRollInfluence(influence,3)

	stiffness = 10.0
	vehicle.setSuspensionStiffness(stiffness,0)
	vehicle.setSuspensionStiffness(stiffness,1)
	vehicle.setSuspensionStiffness(stiffness,2)
	vehicle.setSuspensionStiffness(stiffness,3)
	
	damping = 1.3
	vehicle.setSuspensionDamping(damping,0)
	vehicle.setSuspensionDamping(damping,1)
	vehicle.setSuspensionDamping(damping,2)
	vehicle.setSuspensionDamping(damping,3)

	compression = 2.4
	vehicle.setSuspensionCompression(compression,0)
	vehicle.setSuspensionCompression(compression,1)
	vehicle.setSuspensionCompression(compression,2)
	vehicle.setSuspensionCompression(compression,3)

	
	friction = chassis.friction	
	vehicle.setTyreFriction(friction,0)
	vehicle.setTyreFriction(friction,1)
	vehicle.setTyreFriction(friction,2)
	vehicle.setTyreFriction(friction,3)
	
	
	
	#print dir(vehicle)
	
#PhysicsConstraints.setDebugMode(1)
#PhysicsConstraints.setDeactivationTime(2.)

Personal tools