예제 #1
0
    private void Update()
    {
        if (_ragDoll)
        {
            _ragDollObject.SetActive(true);
            gameObject.SetActive(false);
        }

        if (_runToDeath)
        {
            Vector3 destinationPos = new Vector3(_elevator.transform.position.x, _transformRoot.position.y, _transformRoot.position.z);

            if (!_insideTheElevator)
            {
                _transformRoot.position += Vector3.right * Time.deltaTime * movementSpeed * 5;
            }
            return;
        }


        if (_transformRoot.parent == _elevator.transform)
        {
            Vector3 Position = new Vector3(0, yOffset, 0);
            _transformRoot.localPosition = Position;
        }
        if (_moveForward)
        {
            Vector3 destinationPos = new Vector3(_myWaitPosition.transform.position.x, _transformRoot.position.y, _transformRoot.position.z);

            if (Vector3.Distance(_transformRoot.position, destinationPos) < 0.5f)
            {
                _animator.Idle();
                _reachedWaitPos = true;
                OnReachedDestination?.Invoke(this);
            }
            if (!_reachedWaitPos)
            {
                _animator.Walk();
                _transformRoot.position += Vector3.right * Time.deltaTime * movementSpeed;
            }
        }
        if (_moveToElevator)
        {
            _animator.Walk();
            Vector3 destinationPos = new Vector3(_elevator.transform.position.x, _transformRoot.position.y, _transformRoot.position.z);

            if (!_insideTheElevator)
            {
                _transformRoot.position += Vector3.right * Time.deltaTime * movementSpeed;
            }
        }
        if (_moveToDespawn)
        {
            _transformRoot.LookAt(_mySpawnPosition.transform);
            _transformRoot.position += Vector3.left * Time.deltaTime * movementSpeed * 4;
        }
    }
예제 #2
0
    private void Update()
    {
        if (Idle.Length > 0)
        {
            if (animPlayingGotPoints && Time.time - timeGotPointsStarted > 0.4f)
            {
                animPlayingGotPoints = false;
                currentIndexAnim     = 0;
            }

            if (animPlayingGotPoints)
            {
                currentIndexAnim      = (currentIndexAnim + Time.deltaTime * 8) % GotPoints.Length;
                spriteRenderer.sprite = GotPoints[(int)(currentIndexAnim)];
            }
            else
            {
                currentIndexAnim      = (currentIndexAnim + Time.deltaTime * 8) % Idle.Length;
                spriteRenderer.sprite = Idle[(int)(currentIndexAnim)];
            }
        }

        if (gameManager.GameInProgress)
        {
            transform.rotation = Quaternion.AngleAxis((int)OrientationLawnMower * -90, Vector3.forward);

            float distance = Vector3.Distance(Destination, transform.position);
            if (Time.deltaTime * Speed < distance)
            {
                transform.Translate(Vector3.up * Time.deltaTime);
            }
            else
            {
                GetPoint();
                transform.position = Destination;

                Vector3 newDestination = FindDestination();

                if (Destination == newDestination)
                {
                    IsStuck = true;
                }
                else
                {
                    IsStuck = false;
                }

                Destination = newDestination;
                OnReachedDestination?.Invoke(new Vector2Int((int)Destination.x, (int)Destination.y), OrientationLawnMower);
            }
        }
    }
예제 #3
0
 private void Move()
 {
     if (_moving)
     {
         transform.Translate((_targetPosition - (Vector2)transform.position).normalized * (Time.deltaTime * _speed));
         if (Vector2.Distance(_targetPosition, transform.position) < 0.1)
         {
             transform.position = _targetPosition;
             _moving            = false;
             OnReachedDestination?.Invoke(this);
         }
     }
 }