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; }
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; } }
protected bool startNewCharacterState(eCharacterState state, bool forceResetAction) { bool bChanged = startNewAction((int)state, false); if (bChanged) { LOGGER.logTag("start new state", state.ToString()); } return(bChanged); }
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(); }
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; } }
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) { }
public CharacterBaseState(eCharacterState state) { State = state; }
protected bool startNewCharacterState(eCharacterState state, bool forceResetAction) { LOGGER.log("start new state:" + state.ToString()); return(startNewAction((int)state, false)); }