public void setState(EUnitState state, object param1 = null) { if (currentState == state) { return; } switch (state) { case EUnitState.Idle: StartCoroutine("idle"); break; case EUnitState.Attack1: StartCoroutine("attack1"); break; case EUnitState.Attack2: StartCoroutine("attack2"); break; case EUnitState.Attack3: StartCoroutine("attack3"); break; case EUnitState.RangeAtk: StartCoroutine("rangeAtk"); break; case EUnitState.Run: StartCoroutine("run"); break; default: break; } currentState = state; }
void Update() { switch (_state) { case EUnitState.Stop: break; case EUnitState.Move: MajActualFloor(); _currentTileId = MajCurrentTileId(_currentTileId, _currentTile); _nextTile = GetNexTile(_currentTileId); if (_nextTile != null) { MoveToTile(_nextTile); } break; case EUnitState.SearchPath: MajActualFloor(); if (PathData != null && _currentTile != null) { _pathToFollow = FloorManager.Instance.GetPath(_currentTile, PathData.destinationTile); SetOnTopOfObject(_currentTile.transform); _state = EUnitState.Move; } else { Debug.Log("No path data or currentTile for this Unit : " + this.name); } break; } }
//AnimatorController通知状态改变 public void OnNotifyAnimationStateEnter(AnimatorStateInfo stateInfo) { string preStateName = CurrentAnimatorState; string StateName = string.Empty; if (!StateDic.TryGetValue(stateInfo.shortNameHash, out StateName)) { return; } CurrentAnimatorState = StateName; EUnitState unitState = EUnitState.None; NameToStateDic.TryGetValue(StateName, out unitState); if (unitState != EUnitState.None) { EUnitState preState = UnitState; UnitState = unitState; UnitStateChanged?.Invoke(preState, UnitState); } AnimatorStateChanged?.Invoke(preStateName, CurrentAnimatorState); }
internal void Interuptor(bool a_state) { if (!a_state) { _state = EUnitState.Stop; } if (a_state) { _state = EUnitState.SearchPath; } }
protected void InitActUnit(GameObject go, Transform model) { mGameObject = go; mTransform = go.transform; mModelTrans = model; if (null != mModelTrans) { mCachedAnimation = mModelTrans.GetComponent <Animation>(); } // controller. mController = go.GetComponent <CharacterController>(); if (mController) { mController.enabled = false; mRadius = Mathf.Max(mRadius, mController.radius); } // setup radius. mCollider = go.GetComponent <Collider>(); if (mCollider && mCollider is CapsuleCollider) { mRadius = (mCollider as CapsuleCollider).radius; } for (int i = 0; i < mVariables.Length; i++) { mVariables[i] = new CustomVariable(); } // build the cache layer mask // for unit raycast params. for (int i = 0; i < 32; i++) { if (!Physics.GetIgnoreLayerCollision(go.layer, i)) { mCacheLayerMask |= (1 << i); } } mDead = false; mOnGround = false; mOnTouchWall = false; mOnHighest = false; mDead = false; mHitTarget = null; mState = EUnitState.Normal; mPosition = mTransform.position; mOrientation = mTransform.eulerAngles.y * Mathf.Deg2Rad; mActionStatus = new ActionStatus(this); mActionStatus.ChangeActionGroup(mActionGroupIdx); }
public void SetState(EUnitState state) { if (UnitState == state) { return; } string StateName = string.Empty; //持续的状态才需要改变动作 switch (state) { case EUnitState.Idle: StateName = "Idle"; break; case EUnitState.Walk: StateName = "WalkFront"; break; case EUnitState.Run: StateName = "RunFront"; break; case EUnitState.StandDead: StateName = "StandDead"; break; case EUnitState.AirDead: StateName = "StandDead"; break; } if (!string.IsNullOrEmpty(StateName)) { PlayAnimation(StateName); } }
void Awake() { _state = EUnitState.Stop; _currentLifePoint = lifePoint; }
public int value; // 效果程度的数值 #endregion Fields #region Constructors public UnitState(Skill _skill, EUnitState _state, int _value, bool _superposable = false) { skill = _skill; stateType = _state; value = _value; skillSuperposable = _superposable; }
protected virtual void OnDead() { // disable the controller. mState = EUnitState.Die; }