private void Action_XO() { if (chase_idx > -1) { chase_target.localPosition = get_chaser_position(); AINav.setWayPoint(chase_target); } }
public void HeadingToGetBall(int res_idx) { Transform des = GameManager.instance.Respawn_List[res_idx].transform; AINav.setWayPoint(des); AINav.waypointLoop = false; assigned_respawn = res_idx; }
public void Hide_ToObs() { Transform des = find_nearest_obs(); if (des == null) { Debug.LogError("WHY DESTINATION IS NULL????????"); return; } AINav.setWayPoint(des); AINav.waypointLoop = false; }
private void Action_Prison() { if (chase_bot_idx == -1) { return; } Vector3 dir = GameManager.instance.Bot_List[chase_bot_idx].transform.localPosition - transform.localPosition; RaycastHit hitInfo = new RaycastHit(); Debug.DrawRay(transform.position, dir, Color.black, 1); if (Physics.SphereCast(transform.position, 0.5f, dir, out hitInfo)) { Vector3 move_dir = transform.localPosition; if (hitInfo.transform.CompareTag("Player")) { Debug.DrawRay(hitInfo.point, hitInfo.normal, Color.red, 1); Robot t = hitInfo.transform.GetComponent <Robot>(); if (t.is_left_team != is_left_team) { return; } if (t.bot_idx != chase_bot_idx) { return; } } else { move_dir.z += (dir.z > 0) ? 1: -1; Mathf.Clamp(move_dir.z, -GameManager.instance.Stage_Size / 2, GameManager.instance.Stage_Size / 2); } chase_target.transform.localPosition = move_dir; AINav.setWayPoint(chase_target); } }
private void Action_OX() { switch (Team_State) { case TeamState.LL: if (Play_Style == AIStyle.OFFENSIVE) { goto case TeamState.MM; } else { goto case TeamState.LM; } case TeamState.LM: ///// Teammate Revive Action chase_target.transform.localPosition = GameManager.instance.Bot_List[chase_bot_idx].transform.localPosition; AINav.setWayPoint(chase_target); Vector3 dir0 = transform.TransformDirection(Vector3.forward); RaycastHit hitInfo0 = new RaycastHit(); Debug.DrawRay(transform.position, dir0, Color.green, 1); if (Physics.SphereCast(transform.position, 0.5f, dir0, out hitInfo0)) { if (hitInfo0.transform.CompareTag("Player")) { if (hitInfo0.transform.GetComponent <Robot>().is_left_team != is_left_team) { break; } Debug.DrawRay(hitInfo0.point, hitInfo0.normal, Color.red, 1); Shot_Ball(); chase_bot_idx = -1; GameManager.instance.Return_ChasingObject(chase_idx); chase_idx = -1; //AINav.clearWaypoints(); } } break; case TeamState.ML: case TeamState.MM: ////// Enemy Kill Action { chase_target.transform.localPosition = GameManager.instance.Bot_List[chase_bot_idx].transform.localPosition; AINav.setWayPoint(chase_target); Vector3 dir1 = transform.TransformDirection(Vector3.forward); RaycastHit hitInfo1 = new RaycastHit(); Debug.DrawRay(transform.position, dir1, Color.yellow, 1); if (Physics.SphereCast(transform.position, 0.5f, dir1, out hitInfo1)) { Debug.DrawRay(hitInfo1.point, hitInfo1.normal, Color.red, 1); if (hitInfo1.transform.CompareTag("Player")) { if (hitInfo1.transform.GetComponent <Robot>().is_left_team == is_left_team) { break; } if (hitInfo1.transform.GetComponent <Robot>().bot_area != Bot_Area.INGAME) { break; } Shot_Ball(); chase_bot_idx = -1; GameManager.instance.Return_ChasingObject(chase_idx); chase_idx = -1; //AINav.clearWaypoints(); } else if (hitInfo1.transform.CompareTag("Obs")) { // 가만히 숨어 있는 경우 //if (Play_Style == AIStyle.OFFENSIVE) //{ if (exist_prisoner(true)) { FindRevive_Teammate(); } else { Vector3 dir = GameManager.instance.Bot_List[chase_bot_idx].transform.localPosition - transform.localPosition; Vector3 move_dir = transform.localPosition; move_dir.z += (dir.z > 0) ? 1 : -1; Mathf.Clamp(move_dir.z, -GameManager.instance.Stage_Size / 2, GameManager.instance.Stage_Size / 2); chase_target.transform.localPosition = move_dir; AINav.setWayPoint(chase_target); break; //////////// 공격 가능한 위치로 이동!! 만들어야됨 } //} //else // Transit_OX(); break; ////// Defensive 일 땐 대기 } } } break; } }
private void Action_OO() { switch (Team_State) { case TeamState.LL: if (Play_Style == AIStyle.OFFENSIVE) { goto case TeamState.MM; } else { goto case TeamState.LM; } case TeamState.LM: ///// Teammate Revive Action chase_target.transform.localPosition = GameManager.instance.Bot_List[chase_bot_idx].transform.localPosition; AINav.setWayPoint(chase_target); Vector3 dir0 = transform.TransformDirection(Vector3.forward); RaycastHit hitInfo0 = new RaycastHit(); Debug.DrawRay(transform.position, dir0, Color.blue, 1); if (Physics.SphereCast(transform.position, 0.5f, dir0, out hitInfo0)) { if (hitInfo0.transform.CompareTag("Player")) { if (hitInfo0.transform.GetComponent <Robot>().is_left_team != is_left_team) { break; } Debug.DrawRay(hitInfo0.point, hitInfo0.normal, Color.red, 1); Shot_Ball(); chase_bot_idx = -1; GameManager.instance.Return_ChasingObject(chase_idx); chase_idx = -1; //AINav.clearWaypoints(); } } break; case TeamState.ML: case TeamState.MM: ////// Enemy Kill Action { chase_target.transform.localPosition = GameManager.instance.Bot_List[chase_bot_idx].transform.localPosition; AINav.setWayPoint(chase_target); Vector3 dir1 = transform.TransformDirection(Vector3.forward); RaycastHit hitInfo1 = new RaycastHit(); Debug.DrawRay(transform.position, dir1, Color.blue, 1); if (Physics.SphereCast(transform.position, 0.5f, dir1, out hitInfo1)) { Debug.DrawRay(hitInfo1.point, hitInfo1.normal, Color.red, 1); if (hitInfo1.transform.CompareTag("Player")) { if (hitInfo1.transform.GetComponent <Robot>().is_left_team == is_left_team) { break; } if (hitInfo1.transform.GetComponent <Robot>().bot_area != Bot_Area.INGAME) { break; } Shot_Ball(); chase_bot_idx = -1; GameManager.instance.Return_ChasingObject(chase_idx); chase_idx = -1; //AINav.clearWaypoints(); } } } break; } }