Esempio n. 1
0
        private Vector3 DistanceToMove()
        {
            var distanceToMove = Speed * Time.deltaTime * (destination - origin);

            distanceToMove.z = 0;

            var finalPosition = transform.position + distanceToMove;

            if (direction.Matches(MovementDirection.NORTH) && finalPosition.y > destination.y)
            {
                distanceToMove.y -= finalPosition.y - destination.y;
            }
            else if (direction.Matches(MovementDirection.SOUTH) && finalPosition.y < destination.y)
            {
                distanceToMove.y += finalPosition.y - destination.y;
            }

            if (direction.Matches(MovementDirection.EAST) && finalPosition.x > destination.x)
            {
                distanceToMove.x -= finalPosition.x - destination.x;
            }
            else if (direction.Matches(MovementDirection.WEST) && finalPosition.x < destination.x)
            {
                distanceToMove.x += finalPosition.x - destination.x;
            }

            return(distanceToMove);
        }
Esempio n. 2
0
        public bool Move(MovementDirection direction)
        {
            if (isMoving())
            {
                return(false);
            }

            var angles = Vector3.zero;

            this.direction = direction;

            var angleMultiplier = 1f;

            if (direction.Matches(MovementDirection.NORTH))
            {
                destination.y  += 1f;
                angles.z        = 0;
                angleMultiplier = 0.5f;
            }
            else if (direction.Matches(MovementDirection.SOUTH))
            {
                destination.y  += -1f;
                angles.z        = 180;
                angleMultiplier = 1.5f;
            }

            if (direction.Matches(MovementDirection.EAST))
            {
                destination.x += 1f;
                angles.z       = -90 * angleMultiplier;
            }
            else if (direction.Matches(MovementDirection.WEST))
            {
                destination.x += -1f;
                angles.z       = 90 * angleMultiplier;
            }

            targetEuler = angles;

            // if (!GridSystem.Instance.AllowsMovement(destination)) {
            //     destination = origin;
            //     this.direction = 0;
            //     return false;
            // }

            return(true);
        }