void OnStillDelayed() { //set still delay! ZeroElapsedTime(); switch (bassState) { case BassState.Chase: positionOffset = PSGameUtils.GetPointAroundPosition(LureController.Instance.gameObject.transform.position, Random.Range(Constants.BassBihaviour.minDistanceWhenChaseScaleOne, Constants.BassBihaviour.maxDistanceWhenChaseScaleOne)); delayStill = Random.Range(1.0f - parameters.KASSEILEVEL, 2.0f - parameters.KASSEILEVEL); break; case BassState.Fight: positionOffset = GetRandomFloatingPosition(); break; case BassState.Stay: if (isAttentioned) { positionOffset = PSGameUtils.GetPointAroundPosition(LureController.Instance.gameObject.transform.position, Random.Range(Constants.BassBihaviour.minDistanceWhenChaseScaleOne, Constants.BassBihaviour.maxDistanceWhenChaseScaleOne)); delayStill = Random.Range(1.0f - parameters.KASSEILEVEL, 2.0f - parameters.KASSEILEVEL); } else { if (moveFrequency_still >= Random.value) { Debug.Log("decide to move"); GetNewPoint(GetRandomPositionInTerritory(), true, true, Random.Range(0.0f, 0.1f), 4.0f, 0.0f); } else { delayStill = Random.Range(2.0f, 6.0f); positionOffset = GetRandomFloatingPosition(); } } break; } }
void MoveToTarget() { switch (bassState) { case BassState.Fight: if (Player.Instance.GetDistanceoPlayer() < Constants.Params.kaishuDistance) { Debug.LogError("very close player "); } _stuckCounter += Time.deltaTime * (howLongToDetectReached * 0.25f); Move(true); break; case BassState.Bite: timeReached = 0.0f; _stuckCounter = timeReached; if (Player.Instance.GetDistanceoPlayer() < Constants.Params.kaishuDistance) { Debug.LogError("very close player "); GameController.Instance.BassIsChasing(false, null); ChangeState(BassState.Back); } moveTarget = LureController.Instance.gameObject.transform.position; Move(true); break; case BassState.Chase: //moving if (Player.Instance.GetDistanceoPlayer() < Constants.Params.kaishuDistance) { Debug.LogError("very close player "); GameController.Instance.BassIsChasing(false, null); ChangeState(BassState.Back); } if (LureController.Instance.appeal.moveState == 0) { //rure stopped Debug.LogError("rure stopped set to still "); CheckRureMoveGetAppealled(); stillTimeMax = 0.0f; timeBassIsBoring = 10.0f * parameters.KASSEILEVEL; delayStill = delayEvery * Random.Range(0.5f, 0.99f); _turnSpeed = Random.Range(minTurnSpeed, maxTurnSpeed); positionOffset = PSGameUtils.GetPointAroundPosition(LureController.Instance.gameObject.transform.position, Random.Range(Constants.BassBihaviour.minDistanceWhenChaseScaleOne, Constants.BassBihaviour.maxDistanceWhenChaseScaleOne)); isReachedMovePosition = true; return; } CheckRureMoveGetAppealled(); timeReached = 0.0f; _stuckCounter = timeReached; moveTarget = LureController.Instance.gameObject.transform.position; if (distance < howLongToDetectReached * 2) { if (speedWhenDeccerate == 0.0f) { speedWhenDeccerate = _speed; tParam = 2.0f; } Move(false); } else { if (tParam < -1.0f) { tParam = Mathf.InverseLerp(0.0f, _targetSpeed, _speed); } speedWhenDeccerate = 0.0f; Move(true); } break; case BassState.Stay: if (isAttentioned) { if (Player.Instance.GetDistanceoPlayer() < Constants.Params.kaishuDistance) { Debug.LogError("very close player "); GameController.Instance.BassIsChasing(false, null); ChangeState(BassState.Back); } if (LureController.Instance.appeal.moveState == 0) { //rure stopped CheckRureMoveGetAppealled(); stillTimeMax = 0.0f; timeBassIsBoring = 10.0f * parameters.KASSEILEVEL; Debug.LogError("rure stopped wait for " + timeBassIsBoring + " sec"); delayStill = delayEvery * Random.Range(0.5f, 0.99f); _turnSpeed = Random.Range(minTurnSpeed, maxTurnSpeed); positionOffset = PSGameUtils.GetPointAroundPosition(LureController.Instance.gameObject.transform.position, Random.Range(Constants.BassBihaviour.minDistanceWhenChaseScaleOne, Constants.BassBihaviour.maxDistanceWhenChaseScaleOne)); isReachedMovePosition = true; return; } //moving timeReached = 0.0f; _stuckCounter = timeReached; moveTarget = LureController.Instance.gameObject.transform.position; if (distance < howLongToDetectReached * 2) { if (speedWhenDeccerate == 0.0f) { speedWhenDeccerate = _speed; tParam = -2.0f; } Move(false); } else { if (tParam < -1.0f) { tParam = Mathf.InverseLerp(0.0f, _targetSpeed, _speed); } speedWhenDeccerate = 0.0f; Move(true); } } else { _stuckCounter += Time.deltaTime * (howLongToDetectReached * 0.25f); Move(true); } break; } }