News › Forums › Troubleshooting › Parallel animation and move not working with waypoint networks (prob my fault!)
This topic contains 4 replies, has 2 voices, and was last updated by prime 4 months, 1 week ago.
-
AuthorPosts
-
August 15, 2022 at 3:06 pm #32852
Hi, I am having trouble using a waypoint network and animating using a mecanim parameter for speed which increases over time, rather than jumping from zero to one.
Basically my “Nerd” is supposed to move near to one of the network points in a random path. This works fine. The Nerd is also animated by setting a mecanim parameter to 1 with a damp time. I can’t get the damp time to trigger multiple times in the tree even though I am using a parallel action. If I set the animation speed to repeat the move only fires once so the smooth acceleration works but the character stands still. Am I using the wrong approach entirely?
August 15, 2022 at 3:14 pm #32855I have no idea why the links to screen shots, xml and .cs file are not showing by the way!
August 15, 2022 at 3:17 pm #32856<behaviortree version=”1.1″ repeatuntil=”” name=”NerdBehaviour”>
<parallel tiebreaker=”fail” succeed=”all” repeatuntil=”” name=”parallel” fail=”any”>
<action repeatuntil=”” parametervalues=”” parameters=”” namespace=”(global)” name=”Set Next Wander Location” classname=”WanderLocation” />
<waypointpath waypointsetvariable=”"Wander"” waypointactiontype=”path” traversetype=”pingpong” traverseorder=”forward” repeatuntil=”” pathtargetvariable=”nextPathStop” name=”waypointpath” movetargetvariable=”nextMoveStop”>
<parallel tiebreaker=”fail” succeed=”all” repeatuntil=”” name=”parallel” fail=”any”>
<mecparam valueexpression=”1″ repeatuntil=”” parametertype=”float” parametername=”AnimSpeed” name=”Set AnimSpeed to 1″ damptime=”0.5″ />
<move turnspeed=”” repeatuntil=”” name=”Move to next stop” movetarget=”nextMoveStop” movespeed=”1″ facetarget=”nextMoveStop” closeenoughdistance=”” closeenoughangle=”” />
</parallel>
</waypointpath>
</parallel>
</behaviortree>August 15, 2022 at 3:19 pm #32857WanderLocation.cs
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using RAIN.Core;
using RAIN.Action;
using RAIN.Navigation;
using RAIN.Navigation.Graph;[RAINAction]
public class WanderLocation : RAINAction
{
private static float _time = 0;public WanderLocation()
{
actionName = “WanderLocation”;
}public override void Start(AI ai)
{
base.Start(ai);_time += Time.time;
}public override ActionResult Execute(AI ai)
{
Vector3 loc = Vector3.zero;
List<RAINNavigationGraph> found = new List<RAINNavigationGraph>();do {
loc = new Vector3(ai.Kinematic.Position.x + Random.Range (-3f,3f),
ai.Kinematic.Position.y,
ai.Kinematic.Position.z + Random.Range (-3f,3f));found = NavigationManager.Instance.GraphsForPoints (ai.Kinematic.Position,
loc,
ai.Motor.StepUpHeight,
NavigationManager.GraphType.Navmesh,
((BasicNavigator)ai.Navigator).GraphTags);} while ((Vector3.Distance (ai.Kinematic.Position,loc) < 2f) || (found.Count == 0));
ai.WorkingMemory.SetItem<Vector3>(“nextPathStop”,loc);
Debug.Log (loc);if (_time > 500f)
{
ai.WorkingMemory.SetItem (“isSearching”,false);
_time = 0f;
}return ActionResult.SUCCESS;
}public override void Stop(AI ai)
{
base.Stop(ai);
}
}August 19, 2022 at 1:21 am #32906Not sure I can tell what’s up without seeing a bit more. If you have a way to share a sample project, that’s usually most helpful.
RAIN 2.1 supports damping of speed directly in the Mecanim Motor. So, you could just set the damping there and then use a Move node directly.
-
AuthorPosts
You must be logged in to reply to this topic.