Vector3 CalculateMovementVector(Vector2 normalizedRawInput) { inputRelativeToWorldPlane = MovementUtils.MovementRelativeToCamera(normalizedRawInput, mainCamera); inputRelativeToSlope = _groundDetection.InputAdjustedForCurrentSlope(inputRelativeToWorldPlane); correctedMovement = _obstacleAvoidance.AvoidObstacles(inputRelativeToSlope, _groundDetection.GroundRelationship_.groundNormal); return(correctedMovement); }
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); }