| | using System; |
| | using Unity.MLAgents.Actuators; |
| | using UnityEngine; |
| |
|
| | namespace Unity.MLAgentsExamples |
| | { |
| | |
| | |
| | |
| | |
| | public class BasicActuatorComponent : ActuatorComponent |
| | { |
| | public BasicController basicController; |
| | ActionSpec m_ActionSpec = ActionSpec.MakeDiscrete(3); |
| |
|
| | |
| | |
| | |
| | |
| | public override IActuator[] CreateActuators() |
| | { |
| | return new IActuator[] { new BasicActuator(basicController) }; |
| | } |
| |
|
| | public override ActionSpec ActionSpec |
| | { |
| | get { return m_ActionSpec; } |
| | } |
| | } |
| |
|
| | |
| | |
| | |
| | public class BasicActuator : IActuator |
| | { |
| | public BasicController basicController; |
| | ActionSpec m_ActionSpec; |
| |
|
| | public BasicActuator(BasicController controller) |
| | { |
| | basicController = controller; |
| | m_ActionSpec = ActionSpec.MakeDiscrete(3); |
| | } |
| |
|
| | public ActionSpec ActionSpec |
| | { |
| | get { return m_ActionSpec; } |
| | } |
| |
|
| | |
| | public String Name |
| | { |
| | get { return "Basic"; } |
| | } |
| |
|
| | public void ResetData() |
| | { |
| |
|
| | } |
| |
|
| | public void OnActionReceived(ActionBuffers actionBuffers) |
| | { |
| | var movement = actionBuffers.DiscreteActions[0]; |
| |
|
| | var direction = 0; |
| |
|
| | switch (movement) |
| | { |
| | case 1: |
| | direction = -1; |
| | break; |
| | case 2: |
| | direction = 1; |
| | break; |
| | } |
| |
|
| | basicController.MoveDirection(direction); |
| | } |
| |
|
| | public void Heuristic(in ActionBuffers actionBuffersOut) |
| | { |
| | var direction = Input.GetAxis("Horizontal"); |
| | var discreteActions = actionBuffersOut.DiscreteActions; |
| | if (Mathf.Approximately(direction, 0.0f)) |
| | { |
| | discreteActions[0] = 0; |
| | return; |
| | } |
| | var sign = Math.Sign(direction); |
| | discreteActions[0] = sign < 0 ? 1 : 2; |
| | } |
| |
|
| | public void WriteDiscreteActionMask(IDiscreteActionMask actionMask) |
| | { |
| |
|
| | } |
| |
|
| | } |
| | } |
| |
|