Beispiel #1
0
 public ControllerDefinition(ControllerDefinition source)
     : this()
 {
     Name = source.Name;
     BoolButtons.AddRange(source.BoolButtons);
     FloatControls.AddRange(source.FloatControls);
     FloatRanges.AddRange(source.FloatRanges);
     AxisConstraints.AddRange(source.AxisConstraints);
     CategoryLabels = source.CategoryLabels;
 }
    public Vector3 SeekForce(Vector3 target, AxisConstraints constraints, bool ignoreStoppingDistance = false)
    {
        Vector3 desired = target - transform.position;

        desired.x = constraints.x ? 0 : desired.x;
        desired.y = constraints.y ? 0 : desired.y;
        desired.z = constraints.z ? 0 : desired.z;
        if (!ignoreStoppingDistance && desired.magnitude <= targetStoppingDistance)
        {
            OnSeekTargetReached();
            return(Vector3.zero);
        }

        desired.Normalize();
        desired *= maxSpeed;
        return(desired - velocity);
    }
    public Vector3 ArriveForce(Vector3 target, AxisConstraints constraints, float slowingDistance = 15.0f)
    {
        Vector3 toTarget = target - transform.position;

        toTarget.x = constraints.x ? 0 : toTarget.x;
        toTarget.y = constraints.y ? 0 : toTarget.y;
        toTarget.z = constraints.z ? 0 : toTarget.z;

        float distance = toTarget.magnitude;

        if (distance <= stoppingDistanceUnits)
        {
            OnArriveTargetReached();
            return(Vector3.zero);
        }
        float ramped = maxSpeed * (distance / slowingDistance);

        float   clamped = Mathf.Min(ramped, maxSpeed);
        Vector3 desired = clamped * (toTarget / distance);

        return(desired - velocity);
    }