public virtual void Init()
    {
        _trans             = _character.transform;
        _charAniSp         = _aniChar.GetAniObject().GetComponent <SpriteRenderer>();
        _leftBulletOffset  = new Vector3(-8, 24);
        _rightBulletOffset = new Vector3(8, 24);
        // 设置判定点sprite
        GameObject collisionPointGo = ResourceManager.GetInstance().GetPrefab("Prefab/Character", "CollisionPointObject");

        _collisionPointTf = collisionPointGo.transform;
        _rotatePointTf    = _collisionPointTf.Find("Point");
        UIManager.GetInstance().AddGoToLayer(collisionPointGo, LayerId.PlayerCollisionPoint);
        _preMoveMode = ePlayerMoveMode.HighSpeed;
        _curMoveMode = ePlayerMoveMode.HighSpeed;
        collisionPointGo.SetActive(false);
        _collisionPointRotateVec3 = new Vector3(0, 0, 3f);
        // 初始化副武器的层
        _subLayerTrans = _trans.Find("SubWeapons");
        // 初始化副武器列表
        _subWeapons        = new SubWeaponBase[4];
        _inputShoot        = false;
        _availableSubCount = 5;
        // 设置状态
        _curState      = 0;
        _nextState     = eCharacterState.Appear;
        _isCastingBomb = false;
        _isMovable     = true;
    }
Example #2
0
    void SetState(eCharacterState pState)
    {
        eCharacterState lastState = characterState;

        characterState = pState;
        switch (characterState)
        {
        case eCharacterState.idle:

            break;

        case eCharacterState.aimingAtTarget:
            initialRotation = transform.rotation;
            stateTimer.Set(1);
            break;

        case eCharacterState.goingToTarget:

            break;

        case eCharacterState.pause:
            if (lastState != eCharacterState.pause)
            {
                pausedState = lastState;
            }
            break;
        }
    }
    public void BeingHit()
    {
        return;

        if (!_isInvincible)
        {
            _nextState = eCharacterState.Dying;
        }
    }
Example #4
0
        protected bool startNewCharacterState(eCharacterState state, bool forceResetAction)
        {
            bool bChanged = startNewAction((int)state, false);

            if (bChanged)
            {
                LOGGER.logTag("start new state", state.ToString());
            }
            return(bChanged);
        }
Example #5
0
 public void SetPause(bool value)
 {
     if (value)
     {
         SetState(eCharacterState.pause);
     }
     else
     {
         characterState = pausedState;
     }
 }
 protected void UpdateState()
 {
     if (_nextState != eCharacterState.Undefined && _curState != _nextState)
     {
         OnStateExit();
         _stateUpdateFunc = null;
         _stateExitFunc   = null;
         _curState        = _nextState;
         OnStateEnter();
     }
     _stateUpdateFunc();
 }
Example #7
0
 public override void OnCharacterStateExit(eCharacterState state)
 {
     // 自机离开普通状态,隐藏激光
     if (state == eCharacterState.Normal)
     {
         if (_laser != null)
         {
             _laser.SetActive(false);
             _isShooting = false;
         }
     }
 }
    protected void StateAppearUpdate()
    {
        RotateCollisionPoint();
        // 更新自机移动位置
        float curY = MathUtil.GetEaseInQuadInterpolation(_appearStartY, _appearEndY, _appearTime, _appearDuration);

        _curPos.y = curY;
        _appearTime++;
        if (_appearTime >= _appearDuration)
        {
            _nextState = eCharacterState.Normal;
        }
        UpdateInvincibleStatus();
        UpdatePosition();
    }
 protected virtual void StateDyingUpdate()
 {
     RotateCollisionPoint();
     UpdateCD();
     CastBomb();
     if (_isCastingBomb)
     {
         _nextState = eCharacterState.Normal;
         _character.SetActive(true);
         return;
     }
     _dyingTime++;
     if (_dyingTime >= _dyingDuration)
     {
         _nextState = eCharacterState.WaitReborn;
         CommandManager.GetInstance().RunCommand(CommandConsts.PlayerMiss);
     }
 }
 protected virtual void StateWaitRebornUpdate()
 {
     RotateCollisionPoint();
     _waitRebornTime++;
     // 创建消弹特效
     if (_waitRebornTime == EliminateEffectTime)
     {
         ColliderCircle collider = ColliderManager.GetInstance().CreateColliderByType(eColliderType.Circle) as ColliderCircle;
         collider.SetSize(0, 0);
         collider.ScaleToSize(ElimiateEffectSize, ElimiateEffectSize, EliminateEffectDuration);
         collider.SetExistDuration(EliminateEffectDuration);
         collider.SetHitEnemyDamage(1);
         collider.SetEliminateType(eEliminateDef.PlayerDead);
         collider.SetColliderGroup(eColliderGroup.EnemyBullet | eColliderGroup.Enemy | eColliderGroup.Boss);
     }
     if (_waitRebornTime >= _waitRebornDuration)
     {
         _nextState = eCharacterState.Appear;
     }
 }
Example #11
0
        public static void DisposeState(eCharacterState type, CharacterBaseState state)
        {
            switch (type)
            {
            case eCharacterState.None:
                break;

            case eCharacterState.Idle:
                idleStateQueue.Enqueue((CharacterIdleState)state);
                break;

            case eCharacterState.Walk:
                walkStateQueue.Enqueue((CharacterWalkState)state);
                break;

            case eCharacterState.Max:
                break;

            default:
                break;
            }
        }
 /// <summary>
 /// 当玩家离开某状态时
 /// </summary>
 /// <param name="state"></param>
 public virtual void OnCharacterStateExit(eCharacterState state)
 {
 }
Example #13
0
 public CharacterBaseState(eCharacterState state)
 {
     State = state;
 }
Example #14
0
 protected bool startNewCharacterState(eCharacterState state, bool forceResetAction)
 {
     LOGGER.log("start new state:" + state.ToString());
     return(startNewAction((int)state, false));
 }