User Tools

Site Tools


dragengine:modules:dragonscript:behavior_interactionspot

Differences

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

Link to this comparison view

Next revision
Previous revision
dragengine:modules:dragonscript:behavior_interactionspot [2020/11/23 15:57] – created dragonlorddragengine:modules:dragonscript:behavior_interactionspot [2024/03/14 16:54] (current) dragonlord
Line 16: Line 16:
  
 Elements able to occupy an interaction spot have to use the [[behavior_occupier|ECBehaviorOccupier]] behavior. Both the interaction spot and the occupier have to persist the other behavior. During restoring no notifications are triggered this way. Elements able to occupy an interaction spot have to use the [[behavior_occupier|ECBehaviorOccupier]] behavior. Both the interaction spot and the occupier have to persist the other behavior. During restoring no notifications are triggered this way.
 +
 +<WRAP center 100%>
 +<WRAP center box 450px>
 +{{youtube>BbP-lMrr0tQ?medium}}
 +<WRAP centeralign>Behavior in action (starting at timestamp 1:28)</WRAP>
 +</WRAP>
 +</WRAP>
  
 ====== Instance Counts ====== ====== Instance Counts ======
Line 56: Line 63:
  
 ====== API Documentation ====== ====== API Documentation ======
-[[https://developer.dragondreams.ch/docs/dragonscript/scriptapi/latest/classDragengine_1_1Scenery_1_1ECBehaviorInteractionSpot.html|ECBehaviorStepAside]].+#@LinkApiDocDEDS2_HTML~classDragengine_1_1Scenery_1_1ECBehaviorInteractionSpot.html,ECBehaviorInteractionSpot~@#.
  
 Since DragonScript Module Version **1.4** Since DragonScript Module Version **1.4**
Line 73: Line 80:
        
    public func new() super("ExampleElement")    public func new() super("ExampleElement")
-     // Create component and collider to give element a look and feeling +      // Create component and collider to give element a look and feeling 
-     component = ECBehaviorComponent.new(this) +      component = ECBehaviorComponent.new(this) 
-     collider = ECBehaviorCollider.new(this, component) +      collider = ECBehaviorCollider.new(this, component) 
-      +       
-     // Create interaction spot in front of the element. Typically actors need +      // Create interaction spot in front of the element. Typically actors need 
-     // to be rotated by 180 degrees to interact with elements since then the +      // to be rotated by 180 degrees to interact with elements since then the 
-     // actor is looking at the front side of the element. +      // actor is looking at the front side of the element. 
-     //  +      //  
-     // This behavior is named "use". It is not required to use a name but +      // This behavior is named "use". It is not required to use a name but 
-     // it allows to add multiple interaction spots. This can be because the +      // it allows to add multiple interaction spots. This can be because the 
-     // element has more than one possible interaction or different spots the +      // element has more than one possible interaction or different spots the 
-     // same type of interaction can be used. Think of a bench having 3 seats +      // same type of interaction can be used. Think of a bench having 3 seats 
-     // to sit down. This allows three actors to use the bench but with each +      // to sit down. This allows three actors to use the bench but with each 
-     // seat occupied by only one actor +      // seat occupied by only one actor 
-     interactionSpot = ECBehaviorInteractionSpot.new(this, "use"+      interactionSpot = ECBehaviorInteractionSpot.new(this, "use"
-     interactionSpot.getPosition().setVector(Vector.new(0, 0, 0.8)) +      interactionSpot.getPosition().setVector(Vector.new(0, 0, 0.8)) 
-     interactionSpot.getOrientation().setVector(Vector.new(0, 180, 0)) +      interactionSpot.getOrientation().setVector(Vector.new(0, 180, 0)) 
-     interactionSpot.getLookAt().setVector(Vector.new(0, 1.2, 0.2))+      interactionSpot.getLookAt().setVector(Vector.new(0, 1.2, 0.2))
    end    end
 end end
 </code> </code>
 +
 +In the [[https://github.com/LordOfDragons/deexamples|ExampleApp]] you can find a complete example of using this behavior:
 +  * [[https://github.com/LordOfDragons/deexamples/blob/master/exampleApp/data/scripts/InteractionSpotExampleClass.ds|InteractionSpotExampleClass.ds]]: Element class providing an interaction spot the player can use
 +  * [[https://github.com/LordOfDragons/deexamples/blob/master/exampleApp/data/scripts/BehaviorInteractToggle.ds|BehaviorInteractToggle.ds]]: Interaction behavior allowing player to toggle the animated state of an element. This behavior stores the interaction spot the player has to claim.
 +  * [[https://github.com/LordOfDragons/deexamples/blob/master/exampleApp/data/scripts/PlayerActorClass.ds|PlayerActorClass.ds]]: Player actor class. Uses occupier behavior to safely do interactions.
 +  * [[https://github.com/LordOfDragons/deexamples/blob/master/exampleApp/data/scripts/PlayerActionInteractToggle.ds|PlayerActionInteractToggle.ds]]: Player action interacting with BehaviorInteractToggle. Tries to claim the assigned interaction spot and if successful moves to the spot and uses the element. Once finished releases the interaction spot.
dragengine/modules/dragonscript/behavior_interactionspot.1606147056.txt.gz · Last modified: 2020/11/23 15:57 by dragonlord