Repository URL to install this package:
|
Version:
1.3.0 ▾
|
ai.fluctio.fluctio-sim
/
Core
/
Components
/
MachineLearning
/
NumberProviders
/
DistanceNumberProvider.cs
|
|---|
using Fluctio.FluctioSim.Common.Configuration;
using Fluctio.FluctioSim.Utils.General;
using UnityEngine;
namespace Fluctio.FluctioSim.Core.Components.MachineLearning.NumberProviders
{
[AddComponentMenu(Config.PrefixedName+"/Machine Learning/Number Providers/Distance Calculator", Config.ComponentMenuOrder + 80)]
public class DistanceNumberProvider : NumberProvider
{
[field: SerializeField] public Vector3Bool Components { get; private set; } = new (true);
[field: SerializeField] public GameObject OrientationRelativeTo { get; private set; }
[field: SerializeField] public GameObject Object1 { get; private set; }
[field: SerializeField] public GameObject Object2 { get; private set; }
[Tooltip("Can be negative. For example, if you want to get closer to the goal and punish for bigger distance.\nNumber = distance * distanceMultiplier")]
[SerializeField] public float distanceMultiplier = -1;
public override float GetNumber()
{
var positionDifference = Object1.transform.position - Object2.transform.position;
var localPositionDifference = (OrientationRelativeTo == null)
? positionDifference
: OrientationRelativeTo.transform.InverseTransformDirection(positionDifference);
var flattenedDifference = Components * localPositionDifference;
var distance = flattenedDifference.magnitude;
return distance * distanceMultiplier;
}
}
}