Ejemplo n.º 1
0
    private void MoveToTarget()
    {
        if (_dude.State != Dude.DudeState.Walking || !Planet)
        {
            return;
        }
        if (_target == null)
        {
            return;
        }

        var axis = Vector3.Cross((_target.transform.position - transform.position).normalized, (Planet.transform.position - transform.position).normalized);

        transform.RotateAround(Planet.transform.position, axis.normalized, _movementSpeed * Time.deltaTime);

        var vectorToTarget = _target.transform.position - transform.position;

        var vectorToPlanet = (Planet.transform.position - transform.position).normalized;
        var facingVec      = Vector3.Cross(vectorToPlanet, axis.normalized).normalized;

        //Face towards movedir
        transform.rotation = Quaternion.LookRotation(facingVec, -vectorToPlanet);

        if (vectorToTarget.magnitude <= _target.GetRadius())
        {
            _target = null;
            OnReachedTarget.Invoke();
        }
    }
Ejemplo n.º 2
0
    public static MeltableBase GetClosestMeltable(Vector3 position)
    {
        var          closestDistance = Mathf.Infinity;
        MeltableBase closestMeltable = null;

        foreach (var meltable in MeltableBase.meltables)
        {
            var distance = Vector3.Distance(position, meltable.transform.position);
            if (distance < closestDistance)
            {
                closestDistance = distance;
                closestMeltable = meltable;
            }
        }

        return(closestMeltable);
    }
Ejemplo n.º 3
0
    public void FindNewTarget()
    {
        if (State == DudeState.Grabbed)
        {
            return;
        }
        _target = MeltableBase.GetClosestMeltable(transform.position);

        if (_target == null)
        {
            SetState(DudeState.Idle);
            return;
        }
        else
        {
            SetState(DudeState.Walking);
        }

        _movement.SetTarget(_target);

        _target.OnMelted.AddListener(FindNewTarget);
    }
Ejemplo n.º 4
0
 public void SetTarget(MeltableBase target)
 {
     _target = target;
 }