Exemplo n.º 1
0
    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;
        }
    }
Exemplo n.º 2
0
    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;
        }
    }