This repository has been archived on 2025-04-11. You can view files and clone it, but cannot push or open issues or pull requests.
project-undercover/Project Undercover/Assets/Scripts/CharacterStateMachine/ActionScripts/RoamAction.cs
2017-10-03 04:15:13 -05:00

38 lines
1.1 KiB
C#

using System.Collections;
using UnityEngine;
using UnityEngine.AI;
[CreateAssetMenu(menuName = "CharacterStateMachine/Actions/Roam")]
public class RoamAction : Action
{
private float roomSize = 10.0f;
public override void StartAct(StateController controller)
{
controller.StartCoroutine(changeDestination(controller));
}
public override void EndAct(StateController controller)
{
controller.StopCoroutine(changeDestination(controller));
}
private IEnumerator changeDestination(StateController controller)
{
while(true)
{
yield return new WaitForSeconds(Random.value * 10.0f);
controller.Destination = GetRandomLocation();
}
}
private Vector3 GetRandomLocation()
{
var randTarget = new Vector3(roomSize - (roomSize * 2 * Random.value), 0.0f, roomSize - (roomSize * 2 * Random.value));
NavMeshHit hit;
if (NavMesh.SamplePosition(randTarget, out hit, 1.0f, NavMesh.AllAreas))
return hit.position;
else
return GetRandomLocation();
}
}