ppo-Pyramids-Training
/
Project
/Assets
/ML-Agents
/Examples
/SharedAssets
/Scripts
/DirectionIndicator.cs
using UnityEngine; | |
namespace Unity.MLAgentsExamples | |
{ | |
public class DirectionIndicator : MonoBehaviour | |
{ | |
public bool updatedByAgent; //should this be updated by the agent? If not, it will use local settings | |
public Transform transformToFollow; //ex: hips or body | |
public Transform targetToLookAt; //target in the scene the indicator will point to | |
public float heightOffset; | |
private float m_StartingYPos; | |
void OnEnable() | |
{ | |
m_StartingYPos = transform.position.y; | |
} | |
void Update() | |
{ | |
if (updatedByAgent) | |
return; | |
transform.position = new Vector3(transformToFollow.position.x, m_StartingYPos + heightOffset, | |
transformToFollow.position.z); | |
Vector3 walkDir = targetToLookAt.position - transform.position; | |
walkDir.y = 0; //flatten dir on the y | |
transform.rotation = Quaternion.LookRotation(walkDir); | |
} | |
//Public method to allow an agent to directly update this component | |
public void MatchOrientation(Transform t) | |
{ | |
transform.position = new Vector3(t.position.x, m_StartingYPos + heightOffset, t.position.z); | |
transform.rotation = t.rotation; | |
} | |
} | |
} | |