// Use this for initialization void Start() { m_Runner = new FSMRunner(gameObject); m_Runner.RegisterState <GameMaster_State_RunSingleTurn>(); m_Runner.RegisterState <GameMaster_State_CheckGoal>(); m_Runner.RegisterState <GameMaster_State_GameOver>(); m_Runner.RegisterState <GameMaster_State_Victory>(); m_Runner.RegisterState <GameMaster_State_Terminate>(); m_Runner.RegisterState <GameMaster_State_DummyLoop>(); GameMaster_State_Init stateInit = m_Runner.RegisterState <GameMaster_State_Init>(); stateInit.m_FadeWidget = m_InitFadeWidget; stateInit.m_InitColor = m_InitColor; GameMaster_State_PlayIntro statePlayIntro = m_Runner.RegisterState <GameMaster_State_PlayIntro>(); statePlayIntro.m_IntroCutscene = m_IntroCutscene; m_Runner.StartState((int)GameMasterState.Init); m_Pawns = new List <GameObject>(); m_SceneParameter = GameSceneManager.GetInstance().GetParameter <CombatSceneParameter>(); m_Settings = GetComponent <Combat_Settings>(); for (int prefabId = 0; prefabId < m_SceneParameter.m_EnemiesPawns.Count; prefabId++) { Transform prefab = m_SceneParameter.m_EnemiesPawns[prefabId]; Vector3 position = m_Settings.ComputePawnEnemyGlobalPosition(prefabId); Quaternion orientation = m_Settings.ComputePawnEnemyGlobalOrientation(prefabId); Transform pawn = (Transform)Instantiate(prefab, position, orientation); pawn.parent = gameObject.transform.root; m_Pawns.Add(pawn.gameObject); StickToGround.Apply(pawn.gameObject); } for (int prefabId = 0; prefabId < m_SceneParameter.m_PlayerPawns.Count; prefabId++) { Transform prefab = m_SceneParameter.m_PlayerPawns[prefabId]; Vector3 position = m_Settings.ComputePawnPlayerGlobalPosition(prefabId); Quaternion orientation = m_Settings.ComputePawnPlayerGlobalOrientation(prefabId); Transform pawn = (Transform)Instantiate(prefab, position, orientation); pawn.parent = gameObject.transform.root; m_Pawns.Add(pawn.gameObject); StickToGround.Apply(pawn.gameObject); } m_UIEffects.HideDamageEffect(); m_UIEffects.HideGameOverEffect(); m_UIEffects.HideVictoryEffect(); }
public static void Apply(GameObject _obj) { float extend = StickToGround.GetExtend(_obj); //Start a cast to the ground RaycastHit hit; if (Physics.Raycast(_obj.transform.position, -Vector3.up, out hit)) { //In here, the raycast got a result //Compute how much we went through the ground and move the entity up of this amount. Vector3 oldPos = _obj.transform.position; oldPos.y += extend - hit.distance; _obj.transform.position = oldPos; } }
public void Start() { StickToGround.Apply(gameObject); m_InitialPosition = gameObject.transform.position; switch (m_State) { case PawnState.Idle: SetIdleState(); break; case PawnState.Dead: SetDeadState(); break; case PawnState.Nothing: SetNothingState(); break; } }