User Tools

Site Tools


dragengine:modules:dragonscript:locomotion

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
dragengine:modules:dragonscript:locomotion [2017/02/22 15:32] – [Player Input Tracker] dragonlorddragengine:modules:dragonscript:locomotion [2019/05/08 17:30] dragonlord
Line 1: Line 1:
 +{{tag>dragonscript locomotion actor ai}}
 <WRAP youarehere> <WRAP youarehere>
 [[:start|Start Page]] >> [[dragengine:modules:dragonscript:main|DragonScript Scripting Language]] >> **Locomotion** [[:start|Start Page]] >> [[dragengine:modules:dragonscript:main|DragonScript Scripting Language]] >> **Locomotion**
Line 153: Line 154:
  
 <code> <code>
-// set up locomotion body tilt for an actor using the weighted method +func void init() 
-locomotion.setTiltMode( Locomotion.TILT_WEIGHTED ) +  // set up locomotion body tilt for an actor using the weighted method 
- +  locomotion.setTiltMode( Locomotion.TILT_WEIGHTED ) 
-// create collision filter shared by all tests +   
-var LayerMask category = LayerMask.new() +  // create collision filter shared by all tests 
-category.setBit( GameState.CL_AI )      // we are an collider for doing actor ai +  var LayerMask category = LayerMask.new() 
- +  category.setBit( GameState.CL_AI )      // we are an collider for doing actor ai 
-var LayerMask filter = LayerMask.new() +   
-filter.setBit( GameState.CL_GEOMETRY )  // we can hit geometry like the ground +  var LayerMask filter = LayerMask.new() 
-filter.setBit( GameState.CL_AI )        // we can hit other actor ai colliders +  filter.setBit( GameState.CL_GEOMETRY )  // we can hit geometry like the ground 
- +  filter.setBit( GameState.CL_AI )        // we can hit other actor ai colliders 
-var CollisionFilter collisionFilter = CollisionFilter.new( category, filter ) +   
- +  var CollisionFilter collisionFilter = CollisionFilter.new( category, filter ) 
-// set collision test. the test points are located above the ground since otherwise tilting up can not +   
-// be detected. as a rule of thumb the test distance should be two times the start height. for each +  // set collision test. the test points are located above the ground since otherwise tilting up can not 
-// test a ray test is used. this is the fastest solution and works well for most situations. +  // be detected. as a rule of thumb the test distance should be two times the start height. for each 
-var float offset = 0.5                  // height above ground to start testing +  // test a ray test is used. this is the fastest solution and works well for most situations. 
-var Vector testDistance = Vector.new( 0.0, -offset * 2.0, 0.0 )          // distance to test downwards +  var float offset = 0.5                  // height above ground to start testing 
- +  var Vector testDistance = Vector.new( 0.0, -offset * 2.0, 0.0 )          // distance to test downwards 
-locomotion.setCCTTiltFrontLeft( ColliderCollisionTest.new( touchSensor, touchSensorShape,+   
- collisionFilter, Vector.new( -0.2, offset, 0.2 ), testDistance ) ) +  locomotion.setCCTTiltFrontLeft( ColliderCollisionTest.new( touchSensor, touchSensorShape,
- +    collisionFilter, Vector.new( -0.2, offset, 0.2 ), testDistance ) ) 
-locomotion.setCCTTiltFrontRight( ColliderCollisionTest.new( touchSensor, touchSensorShape,+  locomotion.setCCTTiltFrontRight( ColliderCollisionTest.new( touchSensor, touchSensorShape,
- collisionFilter, Vector.new( 0.2, offset, 0.2 ), testDistance ) ) +    collisionFilter, Vector.new( 0.2, offset, 0.2 ), testDistance ) ) 
- +  locomotion.setCCTTiltBackLeft( ColliderCollisionTest.new( touchSensor, touchSensorShape,
-locomotion.setCCTTiltBackLeft( ColliderCollisionTest.new( touchSensor, touchSensorShape,+    collisionFilter, Vector.new( -0.2, offset, -0.2 ), testDistance ) ) 
- collisionFilter, Vector.new( -0.2, offset, -0.2 ), testDistance ) ) +  locomotion.setCCTTiltBackRight( ColliderCollisionTest.new( touchSensor, touchSensorShape,
- +    collisionFilter, Vector.new( 0.2, offset, -0.2 ), testDistance ) ) 
-locomotion.setCCTTiltBackRight( ColliderCollisionTest.new( touchSensor, touchSensorShape,+   
- collisionFilter, Vector.new( 0.2, offset, -0.2 ), testDistance ) ) +  // add mappings so our animator uses the calculated values 
- +  locomotion.addControllerMaping( controllerTiltOffset, Locomotion.ATTR_TILT_OFFSET ) 
-// add mappings so our animator uses the calculated values +  locomotion.addControllerMaping( controllerTiltUpDown, Locomotion.ATTR_TILT_UP_DOWN ) 
-locomotion.addControllerMaping( controllerTiltOffset, Locomotion.ATTR_TILT_OFFSET ) +  locomotion.addControllerMaping( controllerTiltLeftRight, Locomotion.ATTR_TILT_RIGHT_LEFT ) 
-locomotion.addControllerMaping( controllerTiltUpDown, Locomotion.ATTR_TILT_UP_DOWN ) +end
-locomotion.addControllerMaping( controllerTiltLeftRight, Locomotion.ATTR_TILT_RIGHT_LEFT )+
  
 // tilt is enabled so during Element.postThink the tilt is updated automatically and the result // tilt is enabled so during Element.postThink the tilt is updated automatically and the result
 // applied to animator instance controllers // applied to animator instance controllers
-locomotion.updatePostLocomotion( elapsed )+func void postThink( float elapsedFrameTime ) 
 +  locomotion.updatePostLocomotion( elapsedFrameTime ) 
 +end
 </code> </code>
  
dragengine/modules/dragonscript/locomotion.txt · Last modified: 2024/03/14 16:43 by dragonlord