public override void CallBack_NavEnd() { AINav.clearWaypoints(); AINav.useNavMeshPathPlanning = false; can_contriol = true; base.CallBack_NavEnd(); }
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; }
// Use this for initialization protected virtual void Start() { attackstates = Attackstates.Patrol; player = GameObject.FindGameObjectWithTag("Player"); animator = GetComponent <Animator>(); navMesh = GetComponent <NavMeshAgent>(); FieldOfView = GetComponent <FieldOfView>(); audioSource = GetComponent <AudioSource>(); Nav = GetComponent <AINav>(); Health = MaxHealth; }
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; }
public void Patrol_Prison() { Transform[] des = new Transform[2]; if (is_left_team) { des[0] = (transform.localPosition.z < 0) ? GameManager.instance.NavPoints[3].transform : GameManager.instance.NavPoints[7].transform; des[1] = (transform.localPosition.z < 0) ? GameManager.instance.NavPoints[7].transform : GameManager.instance.NavPoints[3].transform; } else { des[0] = (transform.localPosition.z < 0) ? GameManager.instance.NavPoints[15].transform : GameManager.instance.NavPoints[15].transform; des[1] = (transform.localPosition.z < 0) ? GameManager.instance.NavPoints[11].transform : GameManager.instance.NavPoints[11].transform; } AINav.setWayPoints(des); AINav.waypointLoop = true; }
// Use this for initialization protected override void Awake() { base.Awake(); //thePlayer = GameObject.FindGameObjectWithTag ("Player"); theNav = GetComponent <AINav> (); // weapon spawn logic TODO: create better way of getting the spawn point in order to avoid confusing developers if they rearrange children Transform spawnPoint = transform.GetChild(transform.childCount - 1); GameObject randomWeapon = Instantiate(weaponToSpawn [Random.Range(0, 2)], spawnPoint.position, spawnPoint.rotation); theWeapon = randomWeapon.GetComponent <ProjectileWeapon>(); randomWeapon.transform.parent = spawnPoint; if (theWeapon.theType == ProjectileWeapon.WeaponType.HANDGUN) { hasHandgun = true; theAnim.SetInteger(("WeaponType"), 1); } else { theAnim.SetInteger(("WeaponType"), 2); hasAssault = true; } }
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); } }
// Start is called before the first frame update void Start() { _enemyAi = GetComponent <EnemyAI>(); _aiNav = GetComponent <AINav>(); thisSource = GetComponent <AudioSource>(); }
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; } }
public void Patrol_Obs() { Transform[] des = find_patrol_obs(); AINav.setWayPoints(des); AINav.waypointLoop = true; }
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; } }