public void Init(ActorManager am) { this.am = am; foreach (var behaivour in am.puppet.behaviours) { if (behaivour is ConsciousBehaviour) { consciousBeha = behaivour as ConsciousBehaviour; } else if (behaivour is UnConsciousBehaviour) { unConsciousBeha = behaivour as UnConsciousBehaviour; } } //behaviourFall.OnPreActivate += am.actorController.Fall; BehaPuppet.onRegainBalance.unityEvent.AddListener(am.actorController.OnRegainBalance); BehaPuppet.onLoseBalance.unityEvent.AddListener(am.actorController.Fall); BehaPuppet.onGetUpProne.unityEvent.AddListener(am.actorController.GetUp); BehaPuppet.onGetUpSupine.unityEvent.AddListener(am.actorController.GetUp); // 初始化 muscleGroup updateEntry = UpdateDelegate; ActorParts.MuscleGroup[] muscleGroup = am.actorParts.MuscleGroups; baseProps = new GroupProp[muscleGroup.Length]; for (int i = 0; i < muscleGroup.Length; i++) { baseProps[i] = new GroupProp(muscleGroup[i], updateEntry); } BehaPuppet.InitMuscleGroup(baseProps); InitProps(); }
// 状态变换调用函数 在 bodyAction 的setter 中进行调用。 public void State2Fall() { BehaPuppet.SetState(ConsciousBehaviour.State.Unpinned); }