//---------------------------------------------------------------------- // ゴールのメッシュに当たったらその時点でゴール //---------------------------------------------------------------------- // @Param collider 当たったオブジェクトの当たり判定 // @Return none // @Date 2014/12/9 @Update 2014/12/9 @Author T.Kawashita //---------------------------------------------------------------------- void OnTriggerEnter(Collider collider) { if (collider.transform.tag == "SoccerBall") { // グローバルのゴールのデータに追加 TeamData.AddLog(CGameManager.m_nowTime, CSoccerBallManager.m_shootPlayerNo, CSoccerBallManager.m_shootTeamNo, 0, true); CGameManager.m_bluePoint++; CGameManager.m_nowStatus = CGameManager.eSTATUS.eGOAL; // サポーター追加 int redSupporter = 0; int blueSupporter = 0; // オウンゴールではない場合 if (CSoccerBallManager.m_shootTeamNo != 1) { // 同点に追いつくシュート if (TeamData.GetTeamScore(0) == TeamData.GetTeamScore(1)) { blueSupporter += CSupporterData.m_getDrawPointSupporter; } // 同点から逆転するシュート else if (TeamData.GetTeamScore(1) - 1 == TeamData.GetTeamScore(0)) { blueSupporter += CSupporterData.m_getDrawReversPointSupporter; } blueSupporter += CSupporterData.m_getPointSupporter; } // オウンゴールの場合は点数は入る else if (CSoccerBallManager.m_shootTeamNo == 2) { redSupporter += CSupporterData.m_getPointSupporter; } // 最後にサポーター追加 CSupporterManager.AddSupporter(redSupporter, blueSupporter, true); collider.gameObject.GetComponent <CSoccerBall>().StopTrail(); } }
//---------------------------------------------------------------------- // ゲーム終了待機状態 //---------------------------------------------------------------------- // @Param none // @Return none // @Date 2014/10/28 @Update 2014/10/28 @Author T.Kawashita // @Update 2014/11/18 ゲーム終了待機状態に変更 //---------------------------------------------------------------------- private void GameEndWait() { // 60Fたったかどうか計算 m_frame += Time.deltaTime; if (m_frame >= 1.0f) { m_frame = 0; CGameData.m_gameEndTime--; // ここで何か終わりの表示 if (CGameData.m_gameEndTime <= 0) { // ゲーム終了待機が終わったらフェードアウトさせる m_nowStatus = eSTATUS.eFADEOUT; m_soundPlayer.PlayBGMFadeOut(0.02f); int teamPoint = 0; int redSupporter = 0; int blueSupporter = 0; if (TeamData.GetWinTeamNo() == 0) { redSupporter += CSupporterData.m_winSupporter; // 得点差を求める teamPoint = TeamData.GetTeamScore(0) - TeamData.GetTeamScore(1); if (teamPoint >= 2) { redSupporter += CSupporterData.m_point2WinSupporter; } blueSupporter += CSupporterData.m_loseSupporter; } else if (TeamData.GetWinTeamNo() == 1) { blueSupporter += CSupporterData.m_winSupporter; // 得点差を求める teamPoint = TeamData.GetTeamScore(1) - TeamData.GetTeamScore(0); if (teamPoint >= 2) { blueSupporter += CSupporterData.m_point2WinSupporter; } redSupporter += CSupporterData.m_loseSupporter; } else if (TeamData.GetWinTeamNo() == 2) { redSupporter += CSupporterData.m_drowSupporter; blueSupporter += CSupporterData.m_drowSupporter; teamPoint = TeamData.GetTeamScore(0); if (teamPoint >= 2) { redSupporter += CSupporterData.m_point2Drow; blueSupporter += CSupporterData.m_point2Drow; } } // 最後にサポーター追加 CSupporterManager.AddSupporter(redSupporter, blueSupporter, true); } } }
//---------------------------------------------------------------------- // ボールの当たり判定 //---------------------------------------------------------------------- // @Param none // @Return none // @Date 2014/12/7 @Update 2014/12/7 @Author T.Kawashita // @Update 2014/12/29 ボールを取った瞬間にあがるスピードの準備 //---------------------------------------------------------------------- void OnTriggerEnter(Collider obj) { GameObject player = obj.gameObject; CPlayer playerScript = obj.GetComponent <CPlayer> (); CapsuleCollider capsuleCollider = obj as CapsuleCollider; // プレイヤーとの当たり判定 // 同じチームの場合は取れない if (capsuleCollider != null && playerScript.m_isBall == false && m_isPlayer == true && playerScript.m_status != CPlayerManager.ePLAYER_STATUS.eTACKLEDAMAGE && playerScript.m_status != CPlayerManager.ePLAYER_STATUS.eDASHCHARGE && playerScript.m_status != CPlayerManager.ePLAYER_STATUS.eSHOOTCHARGE && playerScript.m_playerData.m_teamNo != this.transform.parent.GetComponent <CPlayer>().m_playerData.m_teamNo) { // 現在持っているプレイヤーのステータス変更 CPlayer ballPlayer = this.transform.parent.GetComponent <CPlayer> (); this.transform.parent.transform.parent.GetComponent <CPlayerAnimator> ().TackleDamage(); ballPlayer.m_isBall = false; if (ballPlayer.m_status == CPlayerManager.ePLAYER_STATUS.eOVERRIMIT) { ballPlayer.m_oldStatus = CPlayerManager.ePLAYER_STATUS.eOVERRIMIT; } else { ballPlayer.m_oldStatus = CPlayerManager.ePLAYER_STATUS.eNONE; } ballPlayer.m_status = CPlayerManager.ePLAYER_STATUS.eTACKLEDAMAGE; ballPlayer.m_action.InitTackleDamage(ballPlayer.m_human.m_stealDamageLength, 0.0f, ballPlayer.m_human.m_stealDamageLength); // 当たった方のプレイヤーに持ち主を変更 // プレイヤーのボールに設定 Vector3 pos = new Vector3(0.0f, -0.13f, 0.14f); if (obj.gameObject.tag == "RedTeam") { this.SetTrailRed(); } if (obj.gameObject.tag == "BlueTeam") { this.SetTrailBlue(); } CPlayerManager.m_soccerBallManager.ChangeOwner(player.transform, pos); CSoccerBallManager.m_shootPlayerNo = playerScript.m_playerData.m_playerNo; CSoccerBallManager.m_shootTeamNo = playerScript.m_playerData.m_teamNo; playerScript.m_isBall = true; // ボールを取った後スピードを速くする準備 playerScript.m_action.InitGetBall(playerScript.m_human.m_getBallAccSpeedDupRate, playerScript.m_human.m_getBallAccDurationFrame, playerScript.m_human.m_getBallAccDecFrame); playerScript.m_isGetBall = true; // 相手のボールの場合サポーター追加 int supporter = 0; supporter += CSupporterData.m_getBallSupporter; if (playerScript.m_playerData.m_teamNo != ballPlayer.m_playerData.m_teamNo) { supporter += CSupporterData.m_takeBallSupporter; } if (playerScript.m_status == CPlayerManager.ePLAYER_STATUS.eDASH) { if (playerScript.m_playerData.m_teamNo != ballPlayer.m_playerData.m_teamNo) { supporter += CSupporterData.m_takeBallDashSupporter; } supporter += CSupporterData.m_getBallDashSupporter; } CSupporterManager.AddSupporter(playerScript.m_playerData.m_teamNo, supporter); playerScript.m_playerSE.PlaySE("game/supoter_up"); } }
//---------------------------------------------------------------------- // 当たり判定 //---------------------------------------------------------------------- // @Param Collider ぶつかったもののGameObject // @Return none // @Other CallBack // @Date 2014/11/28 @Update 2014/11/28 @Author T.Kawashita // @Update 2014/12/29 ボールを取った瞬間の時の処理追加 //---------------------------------------------------------------------- void OnTriggerEnter(Collider obj) { // ボールとぶつかった時の判定 if (obj.gameObject.tag == "SoccerBall" && this.GetComponent <CPlayer>().m_isBall == false && this.GetComponent <CPlayer>().m_status != CPlayerManager.ePLAYER_STATUS.eTACKLEDAMAGE && this.GetComponent <CPlayer>().m_status != CPlayerManager.ePLAYER_STATUS.eSHOOT && this.GetComponent <CPlayer>().m_status != CPlayerManager.ePLAYER_STATUS.eSMASHSHOOT) { // オーバーリミット状態のシュートならそれに応じて変更 if (obj.transform.parent == GameObject.Find("BallGameObject").transform&& CSoccerBallManager.m_isOverRimitShoot == true) { switch (CSoccerBallManager.m_team) { // イングランドの場合は加速を止める case TeamData.TEAM_NATIONALITY.ENGLAND: CSoccerBallManager.m_isOverRimitShoot = false; CSoccerBallManager.m_team = TeamData.TEAM_NATIONALITY.NONE; break; // スペインはあたったらプレイヤーが吹っ飛ぶ case TeamData.TEAM_NATIONALITY.ESPANA: // 相手を吹っ飛ばされモーションに変更 CPlayer colPlayerScript = this.GetComponent <CPlayer>(); if (colPlayerScript.m_playerData.m_teamNo != CSoccerBallManager.m_shootTeamNo) { this.transform.LookAt(obj.transform); this.transform.parent.GetComponent <CPlayerAnimator>().TackleDamage(); colPlayerScript.m_status = CPlayerManager.ePLAYER_STATUS.eTACKLEDAMAGE; colPlayerScript.m_action.InitTackleDamage(colPlayerScript.m_human.m_tackleDamageMotionLength, colPlayerScript.m_human.m_tackleDamageInitSpeed, colPlayerScript.m_human.m_tackleDamageDecFrame); CSoccerBallManager.m_isOverRimitShoot = false; CSoccerBallManager.m_team = TeamData.TEAM_NATIONALITY.NONE; return; } break; } } // 浮いているボールの場合は自分のボールになる if (obj.transform.parent == GameObject.Find("BallGameObject").transform&& (CSoccerBallManager.m_isOverRimitShoot == false || (CSoccerBallManager.m_isOverRimitShoot == true && this.GetComponent <CPlayer>().m_playerData.m_teamNo == CSoccerBallManager.m_shootTeamNo))) { CPlayer playerScript = this.GetComponent <CPlayer>(); // ダッシュチャージ中にボールを取ったらウェイトアニメーションに変更 if (playerScript.m_status == CPlayerManager.ePLAYER_STATUS.eDASHCHARGE) { playerScript.m_animator.Wait(); playerScript.m_status = CPlayerManager.ePLAYER_STATUS.eNONE; } // ボールの位置をセット Vector3 pos = new Vector3(0.0f, -0.13f, 0.14f); if (this.gameObject.tag == "RedTeam") { obj.GetComponent <CSoccerBall>().SetTrailRed(); } if (this.gameObject.tag == "BlueTeam") { obj.GetComponent <CSoccerBall>().SetTrailBlue(); } CGameManager.m_soundPlayer.ChangeSEVolume(1.0f); CGameManager.m_soundPlayer.PlaySE("game/boll_totta"); // プレイヤーのボールに設定 CPlayerManager.m_soccerBallManager.ChangeOwner(this.transform, pos); CSoccerBallManager.m_shootPlayerNo = this.GetComponent <CPlayer>().m_playerData.m_playerNo; CSoccerBallManager.m_shootTeamNo = this.GetComponent <CPlayer>().m_playerData.m_teamNo; this.gameObject.GetComponent <CPlayer>().m_isBall = true; // ボールの判定をトリガーにする obj.GetComponent <SphereCollider>().isTrigger = true; // ボールを取った後スピードを速くする準備 playerScript.m_action.InitGetBall(playerScript.m_human.m_getBallAccSpeedDupRate, playerScript.m_human.m_getBallAccDurationFrame, playerScript.m_human.m_getBallAccDecFrame); playerScript.m_isGetBall = true; // サポーター追加 int supporter = 0; // プレイヤーのステータスがダッシュだったらサポーター増加 if (playerScript.m_status == CPlayerManager.ePLAYER_STATUS.eDASH) { supporter += CSupporterData.m_getBallDashSupporter; } // 味方が蹴ったボール if (CSoccerBallManager.m_shootTeamNo == playerScript.m_playerData.m_teamNo) { supporter += CSupporterData.m_getBallPassSupporter; } supporter += CSupporterData.m_getBallSupporter; CSupporterManager.AddSupporter(playerScript.m_playerData.m_teamNo, supporter); // playerScript.m_playerSE.PlaySE("game/supoter_up"); } } // タックルの当たり判定 if (this.GetComponent <CPlayer>().m_status == CPlayerManager.ePLAYER_STATUS.eTACKLE && ((obj.gameObject.tag == "RedTeam") || (obj.gameObject.tag == "BlueTeam"))) { CPlayer playerScript = this.GetComponent <CPlayer>(); // アニメーション変更 // 相手がタックル中だったらくらいモーションに変更 if (obj.GetComponent <CPlayer>().m_status == CPlayerManager.ePLAYER_STATUS.eTACKLE) { this.transform.parent.GetComponent <CPlayerAnimator>().TackleDamage(); playerScript.m_status = CPlayerManager.ePLAYER_STATUS.eTACKLEDAMAGE; playerScript.m_action.InitTackleDamage(playerScript.m_human.m_tackleDamageMotionLength, playerScript.m_human.m_tackleDamageInitSpeed, playerScript.m_human.m_tackleDamageDecFrame); } // それ以外の場合は成功モーションに変更 else { this.transform.parent.GetComponent <CPlayerAnimator>().TackleSuccess(); playerScript.m_playerSE.StopSE(); playerScript.m_playerSE.PlaySE("game/tackle_success"); playerScript.m_status = CPlayerManager.ePLAYER_STATUS.eTACKLESUCCESS; playerScript.m_action.InitTackleSuccess(playerScript.m_human.m_tackleHitMotionLength); } // 相手をやられモーションに変更 CPlayer colPlayerScript = obj.GetComponent <CPlayer>(); obj.transform.LookAt(this.transform); obj.transform.parent.GetComponent <CPlayerAnimator>().TackleDamage(); if (colPlayerScript.m_status == CPlayerManager.ePLAYER_STATUS.eOVERRIMIT) { colPlayerScript.m_oldStatus = CPlayerManager.ePLAYER_STATUS.eOVERRIMIT; } else { colPlayerScript.m_oldStatus = CPlayerManager.ePLAYER_STATUS.eNONE; } colPlayerScript.m_status = CPlayerManager.ePLAYER_STATUS.eTACKLEDAMAGE; colPlayerScript.m_playerSE.StopSE(); colPlayerScript.m_action.InitTackleDamage(colPlayerScript.m_human.m_tackleDamageMotionLength, colPlayerScript.m_human.m_tackleDamageInitSpeed, colPlayerScript.m_human.m_tackleDamageDecFrame); int supporter = 0; // ボールを持っている場合は飛ばす if (colPlayerScript.m_isBall == true) { GameObject soccerBall = obj.transform.FindChild("SoccerBall").gameObject; soccerBall.GetComponent <CSoccerBall>().BlownOff(this.transform); colPlayerScript.m_isBall = false; obj.transform.FindChild("SoccerBall").GetComponent <CSoccerBall>().SetTrailYellow(); obj.transform.FindChild("SoccerBall").parent = GameObject.Find("BallGameObject").transform; supporter += CSupporterData.m_damageTackleOnBallSupporter; } if (playerScript.m_playerData.m_teamNo != colPlayerScript.m_playerData.m_teamNo) { // サポーター追加 supporter += CSupporterData.m_damageTackleSupporter; CSupporterManager.AddSupporter(playerScript.m_playerData.m_teamNo, supporter); playerScript.m_playerSE.PlaySE("game/supoter_up"); } } }