// 旗を落とす public void LostFlag() { if (HaveFlag != AIFlagState.NONE) { HaveFlag = AIFlagState.NONE; S_Pui.FlagGetLavelOff(); // エフェクト停止 S_effect[1].EffectStop(); // 旗を落とす myFlag.GetComponent <Flag>().Drop(transform.position); myFlag = null; } }
// 旗を拠点に戻す void ReturnFlag() { if (HaveFlag != AIFlagState.NONE) { HaveFlag = AIFlagState.NONE; S_Pui.FlagGetLavelOff(); // エフェクト停止 S_effect[1].EffectStop(); // 旗の状態を更新 myFlag.GetComponent <Flag>().ResetPos(); myFlag = null; // S_Adire.ChangeState(1); } }
// 陣地,旗の当たり判定取得 void OnTriggerEnter(Collider col) { if (S_Adire.NowState == AIDirector.AIState.WALK || S_Adire.NowState == AIDirector.AIState.WALKSTART || S_Adire.NowState == AIDirector.AIState.WALKGOAL) { if (col.tag == zoneName[(int)m_team.m_teamColor]) // 自分側の陣地 { switch (HaveFlag) { case AIFlagState.MINE: ReturnFlag(); // 自分の旗を自分の陣地に戻す break; case AIFlagState.OTHER: GetPoint(); // 敵の旗を持ってきたのでポイントゲット break; } } else if (col.tag == flagName[(int)m_team.m_teamColor]) // 自分側の旗 { if (HaveFlag == AIFlagState.NONE) { if (col.GetComponent <Flag>().state == 1)// 道中に旗が落ちているなら { HaveFlag = AIFlagState.MINE; GetFlag(col.gameObject); } } } else if (col.tag == flagName[1 - (int)m_team.m_teamColor]) // 敵側の旗 { if (HaveFlag == AIFlagState.NONE) { if (col.GetComponent <Flag>().state != 2)// 旗を誰も持っていないなら { S_Pui.FlagGetLavelOn(); HaveFlag = AIFlagState.OTHER; GetFlag(col.gameObject); } } } } }
void SetHaveFlag(AIFlagState _flag) { m_haveFlag = _flag; }