Beispiel #1
0
 public void Reset()
 {
     CurrentScore = 0;
     trick = TrickMode.None;
     airtime = 0;
     wheelietime = 0;
     scoretime = 0;
 }
Beispiel #2
0
        public void Trick(int trickMode, float minAngle, float maxAngle)
        {
            if (_state == WheelState.Trick)
            {
                return;
            }
            _state     = WheelState.Trick;
            _trickMode = (TrickMode)trickMode;
            _trickMin  = minAngle;
            _trickMax  = maxAngle;
            _tricked   = false;
            _trickIn   = false;

            switch (_trickMode)
            {
            case TrickMode.Back:
            {
                float sign   = _speed > 0 ? 1 : -1;
                float offset = 10;
                minAngle -= offset;
                maxAngle -= offset;
                _speed    = Mathf.Max(150, Mathf.Abs(_speed)) * sign;
                float duration = Random.Range(0.15f, 0.8f);
                _accSpeed = (0 - _speed) / duration;
                _trickIn  = true;
                //Debug.Log("Trick Back Begin AccSpeed = " + _accSpeed.ToString() + ", _speed = " + _speed.ToString());
                break;
            }

            case TrickMode.Pass:
            {
                float sign = (_speed >= 0 ? 1 : -1);
                _accSpeed = 0;
                // 保证此刻速度足够
                if (Mathf.Abs(_speed) <= 100)
                {
                    _speed = 150 * sign;
                }
                //逆时针旋转
                // 计算快速通过时间
                float passDuration = 0.15f;        //150ms
                _trickSpeed = sign * Mathf.Abs(_trickMax - _trickMin) / passDuration;
                _trickSpeed = sign * Mathf.Max(100, Mathf.Abs(_trickSpeed));
                Debug.Log("Trick Pass Begin : Speed = " + _trickSpeed.ToString());
                break;
            }
            }
        }
Beispiel #3
0
    // Update is called once per frame
    void FixedUpdate()
    {
        if (_playerHealth.CurrentHealth <= 0)
            return;

        float scoreboost = 0;
        if (left != null && right != null) {
            bool leftgrounded = left.isGrounded;
            bool rightgrounded = right.isGrounded;
            trick = !rightgrounded ? (trick | TrickMode.FrontWheelUp) : (trick & ~TrickMode.FrontWheelUp);
            trick = !leftgrounded ? (trick | TrickMode.BackWheelUp) : (trick & ~TrickMode.BackWheelUp);
            if ( trick == TrickMode.AllWheelsUp ) {
                airtime += Time.deltaTime;
                if ( airtime > 0.5f ) {
                    scoreboost += airtime * ( bikerflips._currflips + 1 );
                }
                //RaycastHit hit = new RaycastHit();
                //Physics.Raycast(new Ray(transform.position, transform.InverseTransformDirection(new Vector3(0, -1, 0))), out hit);
                if (airtime > 1.5f || sprite.spriteId == air_id) {
                    sprite.spriteId = air_id;
                    scoreboost += airtime * ( bikerflips._currflips + 1 );
                }
                //sprite.spriteId = air_id;
            }
            else if ( trick == TrickMode.None ) {
                airtime = 0;
                wheelietime = 0;
                if (sprite.spriteId == air_id) {
                    sprite.spriteId = ground_id;
                }
            }
            else {
                wheelietime += Time.deltaTime;
                if (wheelietime > 0.4f) {
                    scoreboost += wheelietime;
                }
                if (sprite.spriteId == air_id) {
                    sprite.spriteId = ground_id;
                }
            }
        }
        else {
            airtime = 0;
            wheelietime = 0;
            scoreboost = 0;
            trick = TrickMode.None;
            sprite.spriteId = ground_id;
        }
        if ( bodyisgrounded ) {
            airtime = 0;
            wheelietime = 0;
            scoreboost = 0;
            sprite.spriteId = ground_id;
        }
        else if (Player.rigidbody.velocity.magnitude < 0.1f) {
            airtime = 0;
            wheelietime = 0;
            scoreboost = 0;
            sprite.spriteId = ground_id;
        }
        scoretime += scoreboost != 0 ? Time.deltaTime : 0;
        CurrentScore += scoreboost;
    }