Exemplo n.º 1
0
        public override UnitState FixedUpdate()
        {
            var globalLookDirection = Parameters.LookLogicDirection;
            var moveScaledLogicDirection = Parameters.MoveScaledLogicDirection;
            var parametersAngle =
                AngleCalculator.CalculateLogicAngle(moveScaledLogicDirection, globalLookDirection);
            var logicLookDirection = GetLogicVector(globalLookDirection);

            if (Mathf.Abs(parametersAngle) <= 120)
            {
                ManageReachingLegsTurnDirection(logicLookDirection,
                     moveScaledLogicDirection.normalized);
            }
            else
            {
                ManageReachingLegsTurnDirection(logicLookDirection,
                    -moveScaledLogicDirection.normalized);
            }

            Torso.TurnTowards(logicLookDirection);
            Torso.AimAt(Parameters.AimAtDirection);
            Legs.Move(moveScaledLogicDirection);
            Legs.StraightenUp();
            Torso.Move(moveScaledLogicDirection);
            Torso.StraightenUp();
            return this;
        }
Exemplo n.º 2
0
        protected void ManageReachingLegsTurnDirection(Vector3 logicLookDirection,
                                                       Vector3 movementTurnLogicDirection)
        {
            var legsLogicDirection  = GetLogicVector(Legs.transform.forward);
            var torsoLogicDirection = GetLogicVector(Torso.transform.forward);
            var angle = AngleCalculator.CalculateLogicAngle(legsLogicDirection,
                                                            movementTurnLogicDirection);

            Legs.TurnTowards(movementTurnLogicDirection);
        }