User Tools

Site Tools


dragengine:modules:dragonscript:behavior_alignactor

ECBehaviorAlignActor

Behavior adding support to actors to align to a specific position and orientation.

Manipulates ECBehaviorLocomotion to move an actor a short distance to a specific position, orientation and looking direction. This is typically required for actors intending to interact with objects. In this case the animation of the actor has to match the object it is interacting with. Actor actions will use this behavior to achieve this goal.

Instance Counts

This behavior can be used only once on an element.

Element Class Properties

Element class properties have the prefix alignActor. .

speed

Set movement speed while aligning in meters per seconds.

  • Full name: alignActor.speed
  • Type: float
  • Default Value: 1.25
  • Restriction: At least 0
  • Example (*.deeclass)
    <float name='alignActor.speed'>2</float>

Events

This behavior has these events:

startAligning

Actor starts aligning.

finishedAligning

Actor finished aligning.

Behavior Tree Actions

This behavior adds these behavior tree actions if behavior tree is present.

alignActor.update

Update align actor.

ParameterValueDescription
clear Clear target
initLocomotionPlayer Init locomotion for player actor use
cancel Cancel aligning if running

This is an example of using this action:

<action name='alignActor.set'>
  <parameter name='enabled'>true</parameter>
</action>

alignActor.check

Check one or more align actor parameters. Action succeeds if all parameter value matches their respective align actor parameter otherwise action fails. This action is typically used as first action in a sequence to run the sequence only if a align actor parameter matches (or not).

ParameterValueDescription
arrivedtrue, falseActor arrived at target but might still be turning
finishedtrue, falseActor arrived at target and finished turning
succeededtrue, falseActor could arrive at target and turn to the desired orientation
wait If present action returns BTResult.running instead of BTResult.failed to wait until the checks are all fulfilled

This is an example of using this action:

<sequence>
  <action name='alignActor.check'>
    <parameter name='finished'>true</parameter>
  </action>
  <!-- actions here run only if align actor finished -->
</sequence>

Behavior Tree Conditions

This behavior adds these behavior tree conditions if behavior tree is present.

alignActor.check

Check one or more align actor parameters. Conditions returns true if all parameter value match their respective align actor parameter. This condition is typically used to run an action or sequence of actions as long as align actor conditions are true.

ParameterValueDescription
alignActor.arrivedtrue, falseActor arrived at target but might still be turning
alignActor.finishedtrue, falseActor arrived at target and finished turning
alignActor.succeededtrue, falseActor could arrive at target and turn to the desired orientation

This is an example of using this condition:

<action name='myAction' id='doing something'>
  <parameter name='alignActor.finished'>true</parameter>
  <condition>alignActor.check</condition>
</action>

State Machine Actions

State Machine Conditions

State Machine Events

This behavior sends these state machine events.

alignActor.start

Actor begins aligning.

alignActor.stop

Actor finished aligning.

Required Behaviors

Optional Behaviors

Persistency

This behavior does support element class to be persistable (setPersistable).

API Documentation

ECBehaviorAlignActor.

Since DragonScript Module Version 1.0

Use Cases

  • Align actor with specific position and orientation to interact with an element.
  • Ensure actor is aligned at the end of moving somewhere.

Element Class Example

This example defines an element which supports aligning actor.

class MyElement extends BehaviorElementClass
  public var ECBehaviorComponent component
  public var ECBehaviorCollider collider
  public var ECBehaviorColliderAI colliderAI
  public var ECBehaviorLocomotion locomotion
  public var ECBehaviorConversationActor conversationActor
  public var ECBehaviorAlignActor alignActor
  func new()
    component = ECBehaviorComponent.new(this, null)
    collider = ECBehaviorCollider.new(this, component)
    colliderAI = ECBehaviorColliderAI.new(this, collider)
    locomotion = ECBehaviorLocomotion.new(this, colliderAI)
    conversationActor = ECBehaviorConversationActor.new(this)
    alignActor = ECBehaviorAlignActor.new(this, locomotion, conversationActor)
  end
end

Behavior Factory

Using element class supporting adding behaviors the behavior can be added like this:

<?xml version='1.0' encoding='UTF-8'?>
<elementClass name='MyClass' class='GenericBehaviorElement'>
  <behavior type='ECBehaviorComponent'/>
  <behavior type='ECBehaviorCollider'/>
  <behavior type='ECBehaviorColliderAI'/>
  <behavior type='ECBehaviorLocomotion'/>
  <behavior type='ECBehaviorConversationActor'/>
 
  <behavior type='ECBehaviorAlignActor'>
    <!-- optional: add behavior trees. default adds all behavior trees. -->
    <list name='behaviorTrees'>
      <string/> <!-- add behavior with empty identifier -->
      <string>default</string> <!-- add behavior with 'default' identifier -->
    </list>
 
    <!-- optional: add state machines. default adds all state machines. -->
    <list name='stateMachines'>
      <string/> <!-- add behavior with empty identifier -->
      <string>default</string> <!-- add behavior with 'default' identifier -->
    </list>
 
    <!-- set element properties. omit property prefix if used inside behavior tag -->
    <float name='.speed'>2</float>
  </behavior>
</elementClass>

Live Examples

You could leave a comment if you were logged in.
dragengine/modules/dragonscript/behavior_alignactor.txt · Last modified: 2025/05/12 21:26 by dragonlord