Exemple #1
0
 Vector3 CalculateMovementVector(Vector2 normalizedRawInput)
 {
     inputRelativeToWorldPlane = MovementUtils.MovementRelativeToCamera(normalizedRawInput, mainCamera);
     inputRelativeToSlope      = _groundDetection.InputAdjustedForCurrentSlope(inputRelativeToWorldPlane);
     correctedMovement         = _obstacleAvoidance.AvoidObstacles(inputRelativeToSlope, _groundDetection.GroundRelationship_.groundNormal);
     return(correctedMovement);
 }
Exemple #2
0
    private void Update()
    {
        if (hpC.HP <= 0)
        {
            cState = StateMachine.CombatState.Death;
        }

        //If this object is dead, dont check anything
        if (isDead)
        {
            return;
        }

        rotSpeed = speed / maxSpeed;

        if (cState == StateMachine.CombatState.Attack)
        {
            //Super acceleration if in attack mode :D
            speed += (acceleration * 3) * Time.deltaTime;
        }
        else
        {
            speed += acceleration * Time.deltaTime;
        }

        if (speed >= maxSpeed)
        {
            speed = maxSpeed;
        }


        objectScanTimer += Time.deltaTime;
        if (objectScanTimer >= objectScanDelay)
        {
            objectScanTimer = 0;
            //Heavy process, dont run too often
            objectsClose = HelperFunctions.GetObjectsInRange(transform.position, findObjectRange, findObjectMask);
        }


        delayTimer += Time.deltaTime;
        if (delayTimer >= delayTime)
        {
        }

        delayTimer = 0;
        result     = oba.AvoidObstacles(speed, maxSpeed, rotateDir);
        if (result.speed >= 0)
        {
            speed = result.speed;
        }

        if (defenceTarget == null)
        {
            statueScript = null;
        }
        else
        {
            if (statueScript == null)
            {
                statueScript = defenceTarget.GetComponent <StatueScript>();
            }
        }

        StateCheck();


        StateAction();
        if (mState == StateMachine.MovementState.Idle)
        {
            return;
        }
        RotateObject(result.rotDir);
    }