//public override void InitNetwork() //{ // network_server = gameObject.AddComponent<NetworkClient>(); // network_server.isScreening = false; //} public override void AddToSendList(SenceGameObject obj_data) { if (!send_player.ContainsKey(obj_data.SenceObject.ID)) { send_player.Add(obj_data.SenceObject.ID, obj_data); } }
public void StoneWalkLine(SenceGameObject target_data, GameObject LeftFirePoint, GameObject RightFirePoint) { if ((target_data.transform.position - target_data.ai_end_point).magnitude <= 5) { MsgCenter.Instance.DestroySenceObject(target_data, 1.0f); } // 如果到达第一个目标点 if ((target_data.transform.position - target_data.follow.Target).magnitude <= 20 && !target_data.ai_in_end) { target_data.follow.Target = target_data.ai_end_point; target_data.ai_in_end = true; } //Debug.Log(target_data.gameObject.name + "::::" + (target_data.transform.position - MsgCenter.Instance.PlayerData.transform.position).magnitude); if (!target_data.ai_in_end && (target_data.transform.position - MsgCenter.Instance.PlayerData.transform.position).magnitude <= 10) { //Debug.Log("<<<<<<<<<<<<<<"); _ray = new Ray(target_data.transform.position, target_data.transform.forward); if (Physics.Raycast(_ray, out _hit, 1000)) { //Debug.Log("hit.name = " + _hit.transform.gameObject.name); if (_hit.transform.gameObject.CompareTag(SenceGameObject.PLAYER_TAG)) { Debug.Log("hit = " + _hit.transform.gameObject.name); MsgCenter.Instance.HurtPoints.Add(target_data.SenceObject.ID, _hit.point); } } } }
public void OnLogic(SenceGameObject target_data, GameObject LeftFirePoint, GameObject RightFirePoint) { switch (target_data._pc_man.ai_type) { case AIType.Lithe: AIWalkLine(target_data, LeftFirePoint, RightFirePoint); break; case AIType.Attack: AIWalkWinding(target_data, LeftFirePoint, RightFirePoint); break; case AIType.LifeAndAttack: BossWalk(target_data, LeftFirePoint, RightFirePoint); break; case AIType.SmartAI: AIWalkNew(target_data, LeftFirePoint, RightFirePoint); break; case AIType.Stone: StoneWalkLine(target_data, LeftFirePoint, RightFirePoint); break; } target_data._pc_man.Position = transform.position; target_data._pc_man.Rotation = transform.rotation; }
public void AIWalkLine(SenceGameObject target_data, GameObject LeftFirePoint, GameObject RightFirePoint) { //if ((target_data.transform.position - target_data.ai_end_point).magnitude <= 5) //{ // MsgCenter.Instance.DestroySenceObject(target_data, 1.0f); //} // 如果到达第一个目标点 if ((target_data.transform.position - target_data.follow.Target).magnitude <= 20 && !target_data.ai_in_end) { target_data.follow.Target = target_data.ai_end_point; target_data.ai_in_end = true; } if (!target_data.ai_in_end) { target_data.luach_time += Time.deltaTime; //Debug.Log(target_data.luach_time + " <= " + target_data._pc_man.LaunchSpeed); if (target_data.luach_time >= target_data._pc_man.LaunchSpeed) { target_data.luach_time = 0; LuachBullet(target_data, LeftFirePoint); //target_data.LeftFlower.SetActive(true); if (target_data.RightFirePoint != null) { LuachBullet(target_data, RightFirePoint); //target_data.RightFlower.SetActive(true); } } } }
public override void DestroySenceObject(SenceGameObject obj_data) { SenceObjects.Remove(obj_data.SenceObject.ID); if (obj_data != null) { Destroy(obj_data.gameObject); } }
public void BossWalk(SenceGameObject target_data, GameObject LeftFirePoint, GameObject RightFirePoint) { // 如果到达第一个目标点 //if (target_data.Stone.enabled && // (target_data.transform.position - target_data.Stone.Tartget).magnitude <= 30) //{ // target_data.Stone.enabled = false; // target_data.ai_in_end = true; // //Debug.Log("target_data.Stone.enabled = false;"); //} if (!isone) { temp = target_data.follow.Target; } if (target_data.follow.enabled) { if (Vector3.Distance(target_data.transform.position, target_data.follow.EndPos) <= 2 && !target_data.follow.IsBack) { target_data.follow.RunSpeed = 0.1f; target_data.follow.RotateSpeed = 0.01f; target_data.follow.isTurn = true; target_data.follow.Target = target_data.follow.UPPos; target_data.follow.IsBack = true; } else if (target_data.follow.IsBack && Vector3.Distance(target_data.transform.position, target_data.follow.Target) <= 2) { // target_data.follow.Target = target_data.follow.Target == MsgCenter.Instance.EndPosition.position ? temp : MsgCenter.Instance.EndPosition.position; //target_data.follow.enabled = false; target_data.follow.isTurn = true; target_data.follow.Target = target_data.follow.Target == target_data.follow.EndPos?target_data.follow.UPPos:target_data.follow.EndPos; } //Debug.Log("target_data.Stone.enabled = false;"); } else { target_data.transform.eulerAngles = new Vector3(target_data.transform.eulerAngles.x, Mathf.Lerp(target_data.transform.eulerAngles.y, MsgCenter.Instance.EndPosition.eulerAngles.y, 0.002f), target_data.transform.eulerAngles.z); } if (target_data.follow.IsBack) { target_data.luach_time += Time.deltaTime; //Debug.Log(target_data.luach_time + " <= " + target_data._pc_man.LaunchSpeed); if (target_data.luach_time >= target_data._pc_man.LaunchSpeed) { target_data.luach_time = 0; LuachBullet(target_data, LeftFirePoint); //target_data.LeftFlower.SetActive(true); if (target_data.RightFirePoint != null) { LuachBullet(target_data, RightFirePoint); //target_data.RightFlower.SetActive(true); } } } }
public void CreateWeapon(string weapon_name, Vector3 position) { //Debug.Log("weapon_nameweapon_name:::::: " + weapon_name); if (!string.IsNullOrEmpty(weapon_name)) { //Debug.Log(weaponPool.ContainsKey(weapon_name) + " 是否存在"); if (weaponPool.ContainsKey(weapon_name)) { //Debug.Log("weaponPool.ContainsKey(weapon_name)"); GameObject go = weaponPool[weapon_name]; if (go == null) { Init(); go = weaponPool[weapon_name]; } if (go.activeSelf) { StartCoroutine(CreateWp(weapon_name, go, position)); } else { //Debug.Log(go.name + " go.name"); SenceGameObject temp = go.GetComponent <SenceGameObject>(); if (temp == null) { temp = go.AddComponent <SenceGameObject>(); } temp.SenceObject = new Prop(MsgCenter.Instance.GetID(), weapon_name, 0, 0, 0, position, Quaternion.identity, ObjectState.None, ObjectType.Weapon); if (position.z > 80) { Vector3 tmp_V3 = Camera.main.transform.position - position; temp.transform.position = tmp_V3.normalized * (tmp_V3.magnitude - 80) + position; } else { temp.transform.position = position; temp.SenceObject.Position = position; temp.SenceObject.Rotation = Quaternion.identity; } temp.isSevice = true; //if(test_bl) //{ // go.tag = SenceGameObject.NONE_TAG; //} test_bl = true; temp.enabled = true; go.SetActive(true); MsgCenter.Instance.AddToSendList(temp); } } } }
/// <summary> /// 停在某个位置后 朝向玩家发射子弹 /// </summary> /// <param name="target_data"></param> /// <param name="LeftFirePoint"></param> /// <param name="RightFirePoint"></param> public void AIWalkWinding(SenceGameObject target_data, GameObject LeftFirePoint, GameObject RightFirePoint) { if (target_data.ai_in_end && !target_data.follow.ToStartPosition && (target_data.transform.position - target_data.ai_end_point).magnitude <= 5) { target_data.follow.degree++; target_data.follow.ToStartPosition = true; target_data.follow.Target = target_data.ai_start_position; if (target_data.follow.degree >= 3) { //Debug.Log("destroy : target_data.follow.degree >= 3"); MsgCenter.Instance.DestroySenceObject(target_data, 1.0f); } } if (target_data.ai_in_end && (target_data.transform.position - target_data.ai_start_position).magnitude <= 5) { //target_data.follow.degree++; target_data.follow.ToStartPosition = false; target_data.follow.Target = target_data.ai_target_point; target_data.ai_in_end = false; } // 如果到达第一个目标点 if ((target_data.transform.position - target_data.follow.Target).magnitude <= 20 && !target_data.ai_in_end) { target_data.follow.Target = target_data.ai_end_point; target_data.ai_in_end = true; } if (!target_data.ai_in_end) { target_data.luach_time += Time.deltaTime; //Debug.Log(target_data.luach_time + " <= " + target_data._pc_man.LaunchSpeed); if (target_data.luach_time >= target_data._pc_man.LaunchSpeed) { target_data.luach_time = 0; LuachBullet(target_data, LeftFirePoint); //target_data.LeftFlower.SetActive(true); if (target_data.RightFirePoint != null) { LuachBullet(target_data, RightFirePoint); //target_data.RightFlower.SetActive(true); } } } }
void OnTriggerEnter(Collider coll) { if (coll.CompareTag(SenceGameObject.AI_BULLET_TAG) || coll.CompareTag(SenceGameObject.AI_TAG)) { tmp_obj_data = coll.gameObject.GetComponent <SenceGameObject>(); if (MsgCenter.Instance != null) { Shake(); //可以添加护盾音效 Audiocontroller.instans.PlayEffectAudio("hudun");/*被敌人击中时发出的声音*/ if (MsgCenter.Instance.HurtPoints.ContainsKey(tmp_obj_data.SenceObject.ID)) { img = Instantiate(Img) as GameObject; img.gameObject.transform.position = MsgCenter.Instance.HurtPoints[tmp_obj_data.SenceObject.ID]; } else { //Debug.LogError("server hurt err:" + tmp_obj_data.gameObject.name); } } else { // Debug.Log("<color=yellow>击中" + tmp_obj_data.SenceObject + "</color>"); img = Instantiate(Img) as GameObject; if (Recever.rInstance.HurtPoints.ContainsKey(tmp_obj_data.SenceObject.ID)) { img.gameObject.transform.position = Recever.rInstance.HurtPoints[tmp_obj_data.SenceObject.ID]; } else { ray = new Ray(tmp_obj_data.transform.position, transform.position - tmp_obj_data.transform.position); if (Physics.Raycast(ray, out hit)) { img.gameObject.transform.position = hit.point; } } } if (img != null) { img.gameObject.name = "Hurt"; img.gameObject.transform.LookAt(Camera.main.transform); img.gameObject.SetActive(true); isShake = true; } } }
public void AIWalkNew(SenceGameObject target_data, GameObject LeftFirePoint, GameObject RightFirePoint) { //Debug.Log(Vector3.Distance(target_data.follow.transform.position, target_data.follow.EndPos)); if (Vector3.Distance(target_data.follow.transform.position, target_data.follow.EndPos) < 10.0f && !target_data.follow.IsBack) { target_data.follow.isTurn = false; target_data.follow.Target = target_data.follow.UPPos; } if (Vector3.Distance(target_data.follow.transform.position, target_data.follow.UPPos) < 10.0f) { target_data.follow.IsBack = true; target_data.follow.Target = target_data.follow.StartPos; } if (Vector3.Distance(target_data.follow.transform.position, target_data.follow.StartPos) < 10.0f && target_data.follow.IsBack) { target_data.follow.isTurn = true; target_data.follow.PosRange(); target_data.follow.IsBack = false; //if (target_data.follow.EndPos.z > 0) //{ //target_data.follow.EndPos = new Vector3(target_data.follow.EndPos.x, target_data.follow.EndPos.y, -target_data.follow.EndPos.z); //} target_data.follow.Target = target_data.follow.EndPos; } float tempAngle = Vector3.Angle(-target_data.follow.transform.forward, Vector3.forward); if (!target_data.ai_in_end && !target_data.follow.IsBack && target_data.follow.transform.position.z > 0 && target_data.follow.state == AIState.Attack && (tempAngle > 0 && tempAngle < 20)) { target_data.luach_time += Time.deltaTime; //Debug.Log(target_data.luach_time + " <= " + target_data._pc_man.LaunchSpeed); if (target_data.luach_time >= target_data._pc_man.LaunchSpeed) { target_data.luach_time = 0; LuachBullet(target_data, LeftFirePoint); //target_data.LeftFlower.SetActive(true); if (target_data.RightFirePoint != null) { LuachBullet(target_data, RightFirePoint); //target_data.RightFlower.SetActive(true); } } } }
public void Init(int level) { _network_server = gameObject.AddComponent <NetworkServer>(); if (RoleLevelData.ContainsKey(level)) { GameObject obj = Instantiate(RolePrefabs[RoleLevelData[level].Index]) as GameObject; SenceGameObject obj_data = obj.AddComponent <SenceGameObject>(); RoleLevelData[level].Position = obj.transform.position; RoleLevelData[level].Rotation = obj.transform.rotation; obj_data.SenceObject = RoleLevelData[level]; obj_data.SenceObject.ID = id_index; _role = obj_data.SenceObject as Role; SenceObjects.Add(obj_data.SenceObject.ID, obj_data); obj.transform.parent = this.transform; obj.name = "id_" + id_index + "_" + RoleLevelData[level].Name; id_index++; } StartCoroutine(CreateAI(level)); }
public void OnTriggerEnter(Collider coll) { //Debug.Log("OnTriggerEnter"); if (coll.gameObject.CompareTag(SenceGameObject.AI_TAG) || coll.gameObject.CompareTag(SenceGameObject.AI_STONE)) { _sum++; obj_data = coll.gameObject.GetComponent <SenceGameObject>(); if (_sum >= MAX_SUM || obj_data._pc_man.ai_type == Datas.AIType.LifeAndAttack || obj_data._pc_man.ai_type == Datas.AIType.Stone) { _sum = 0; if (MsgCenter.Instance != null) { MsgCenter.Instance.ShowWarming(obj_data._pc_man.ai_type); } else { Recever.rInstance.ShowWarming(obj_data._pc_man.ai_type); } } } }
public IEnumerator CreateWp(string weapon_name, GameObject go, Vector3 position) { //Debug.Log(go.name + " go.name"); SenceGameObject temp = go.GetComponent <SenceGameObject>(); MsgCenter.Instance.DestroySenceObject(temp, 0.1f); while (!temp.ClientIsDestroy) { yield return(null); } temp.SenceObject = new Prop(MsgCenter.Instance.GetID(), weapon_name, 0, 0, 0, position, Quaternion.identity, ObjectState.None, ObjectType.Weapon); if (position.z > 80) { Vector3 tmp_V3 = Camera.main.transform.position - position; temp.transform.position = tmp_V3.normalized * (tmp_V3.magnitude - 80) + position; } else { temp.transform.position = position; temp.SenceObject.Position = position; temp.SenceObject.Rotation = Quaternion.identity; } temp.isSevice = true; //if(test_bl) //{ // go.tag = SenceGameObject.NONE_TAG; //} test_bl = true; temp.enabled = true; go.SetActive(true); MsgCenter.Instance.AddToSendList(temp); }
// Update is called once per frame void Update() { //Debug.Log("update:" + ReinObj.name + (Used).ToString()); if (Used && ReinObj != null) { //Debug.Log("rayrayray" + ReinObj.transform.position); ray.origin = ReinObj.transform.position; ray.direction = ReinObj.transform.forward; Debug.DrawLine(ray.origin, ray.direction.normalized * 3000f, Color.blue); if (Physics.Raycast(ray, out hit, 3000)) { Debug.DrawLine(ray.origin, hit.point, Color.green); //print(hit.collider.gameObject.name + ":" + hit.collider.gameObject.tag); if ((hit.collider.gameObject.tag == SenceGameObject.AI_TAG || hit.collider.gameObject.tag == SenceGameObject.Weapon_TAG) && !MsgCenter.Instance.player.useWeapon.Name.Equals("weapon3")) { //transform.LookAt(hit.collider.transform.position); obj_data = hit.collider.gameObject.GetComponent <SenceGameObject>(); hit_is_ai = true; } else if ((hit.collider.gameObject.tag == SenceGameObject.AI_TAG || hit.collider.gameObject.tag == SenceGameObject.Weapon_TAG) && MsgCenter.Instance.player.useWeapon.Name.Equals("weapon3")) { obj_data = hit.collider.gameObject.GetComponent <SenceGameObject>(); hit_is_ai = true; } else if (hit.collider.gameObject.tag == SenceGameObject.UI_TAG && (hit.collider.gameObject.name.Equals("NameButton") || hit.collider.gameObject.name.Equals("CreatPlayerButton") || hit.collider.gameObject.name.Equals("StartGameButton") || hit.collider.gameObject.name.Equals("RedoButton") || hit.collider.gameObject.name.Equals("ExitButton")) ) { hit.collider.GetComponent <Image>().color = Color.green; temphit = hit.collider.gameObject; if (MsgCenter.Instance.player.RightRein.Key || MsgCenter.Instance.player.LeftRein.Key) { //Debug.Log("IFIFIFIFIIFIFIFIIFIFIF"); MsgCenter.Instance.Menu.Click(hit.collider.gameObject.name); } } if (!MsgCenter.Instance.player.useWeapon.Name.Equals("weapon3")) { //Debug.Log("lookatlookatlookat"+ReinObj.transform.position); transform.LookAt(ReinObj.transform.forward.normalized * 1000); } else { // Debug.Log("elseelseelse"); transform.forward = Vector3.forward; } } else { if (temphit != null) { temphit.GetComponent <Image>().color = Color.white; } // Debug.Log("elseflselfsleflsfklsekflks"); if (this.gameObject.name.Equals("FireLL")) { //MsgCenter.Instance.LeftHub.transform.localScale = Vector3.one; MsgCenter.Instance.LeftHub.transform.position = ReinObj.transform.forward * MIN_DISTANCE + ReinObj.transform.position; } else { //MsgCenter.Instance.RightHub.transform.localScale = Vector3.one; MsgCenter.Instance.RightHub.transform.position = ReinObj.transform.forward * MIN_DISTANCE + ReinObj.transform.position; } if (!MsgCenter.Instance.player.useWeapon.Name.Equals("weapon3")) { transform.LookAt(ReinObj.transform.forward.normalized * 1000); } else { transform.forward = Vector3.forward; } } if (hit_is_ai) { if (this.gameObject.name.Equals("FireLL")) { MsgCenter.Instance.left_fire_target = obj_data; } else { MsgCenter.Instance.right_fire_target = obj_data; } hit_is_ai = false; } // 判断是weapon3时 if (MsgCenter.Instance.player.useWeapon.Name.Equals("weapon3")) { //if (obj_data != null) //{ // Debug.Log((this.gameObject.name.Equals("FireLL") ? "left.isVisible = " : "right.isVisible = ") + obj_data.isVisible); //} if (obj_data != null) { _tmpTime_fl += Time.deltaTime; if (_tmpTime_fl < LOCK_TIME) { if (this.gameObject.name.Equals("FireLL")) { MsgCenter.Instance.LeftLockHub.transform.position = (obj_data.transform.position - ReinObj.transform.position).normalized * CURR_DISTANCE + ReinObj.transform.position; if (!MsgCenter.Instance.LeftLockHub.activeSelf) { MsgCenter.Instance.LeftLockHub.SetActive(true); Audiocontroller.instans.PlayBossAudio("suoding"); } //Debug.Log("dis……"); } else { MsgCenter.Instance.RightLockHub.transform.position = (obj_data.transform.position - ReinObj.transform.position).normalized * CURR_DISTANCE + ReinObj.transform.position; if (!MsgCenter.Instance.RightLockHub.activeSelf) { MsgCenter.Instance.RightLockHub.SetActive(true); Audiocontroller.instans.PlayBossAudio("suoding"); } //Debug.Log("dis……"); } } else { _tmpTime_fl = 0; obj_data = null; } } else { if (this.gameObject.name.Equals("FireLL")) { MsgCenter.Instance.LeftLockHub.SetActive(false); MsgCenter.Instance.left_fire_target = null; } else { MsgCenter.Instance.RightLockHub.SetActive(false); MsgCenter.Instance.right_fire_target = null; } } } else { if (this.gameObject.name.Equals("FireLL")) { MsgCenter.Instance.LeftLockHub.SetActive(false); MsgCenter.Instance.left_fire_target = null; } else { MsgCenter.Instance.RightLockHub.SetActive(false); MsgCenter.Instance.right_fire_target = null; } } RefresCurrentPo(); } }
// 刷新场景内所有物体 public void Refresh(List <RootObject> temp_dic) { //服务器里没有本地有 foreach (RootObject value in temp_dic) { if (SenceObjects.ContainsKey(value.ID) && value.state == ObjectState.Destroy) { //Debug.Log(SenceObjects.ContainsKey(temptest) + ":::value.contains过滤后"+value.Name + ":::value.name"); //Ai销毁时,销毁对应的导弹 if (value.type == ObjectType.AI && guideddestroy.ContainsKey(value.ID)) { Destroy(guideddestroy[value.ID], 1f); } //不销毁Boss,只隐藏 if (value.type == ObjectType.AI) { AI ai = value as AI; if (ai.ai_type == AIType.LifeAndAttack && SenceObjects.ContainsKey(value.ID) && SenceObjects[value.ID] != null) { SenceObjects[value.ID].gameObject.SetActive(false); Destroy(SenceObjects[value.ID].GetComponent <SenceGameObject>()); } else { DestroySenceObject(SenceObjects[value.ID]); } } else { DestroySenceObject(SenceObjects[value.ID]); } } else if (value.type == ObjectType.AI && SenceObjects.ContainsKey(value.ID) && value.state != ObjectState.Destroy) { } } foreach (RootObject value in temp_dic) { //本地包含服务器物体 if (Recever.rInstance.SenceObjects.ContainsKey(value.ID) && value != null) { RefreshObject(value); } //本地不包含服务器物体 else if (!roleViews.ContainsKey(value.ID) && value.state != ObjectState.Destroy) { GameObject obj; Role player; AI ai; Bullet bullet; SenceGameObject obj_data; HP_View hpview; switch (value.type) { case ObjectType.Player: player = value as Role; //Debug.Log("<color.red>"+player.Index+"</color>"); obj = Instantiate(RolePrefabs[player.Index]) as GameObject; obj_data = obj.AddComponent <SenceGameObject>(); playerData = obj.AddComponent <PlayerController>(); playerData.prefabs = this.BulletPrefabs; obj_data.Player = obj.transform.FindChild("_player").gameObject; GradeTx = obj_data.Player.transform.FindChild("Grade").GetComponent <TextMesh>(); PlayerHPText = obj_data.Player.transform.FindChild("PlayerHPText").GetComponent <TextMesh>(); topworming = obj_data.Player.transform.FindChild("Canvas").FindChild("Image_info").GetComponentInChildren <TextMesh>(); rightrange = obj_data.Player.transform.FindChild("RightRange").GetComponent <TextMesh>(); leftrange = obj_data.Player.transform.FindChild("LeftRange").GetComponent <TextMesh>(); RefreshPlayerGrad(player.HP, player.Grade); obj_data.RightBattery = obj_data.Player.transform.FindChild("FireRR").gameObject.AddComponent <LookAt>(); obj_data.LeftBattery = obj_data.Player.transform.FindChild("FireLL").gameObject.AddComponent <LookAt>(); //obj_data.RightBattery.transform.FindChild("PaoL").gameObject.AddComponent<Gunrotate>(); //obj_data.LeftBattery.transform.FindChild("PaoR").gameObject.AddComponent<Gunrotate>(); obj_data.LeftFirePoint = obj_data.LeftBattery.transform.FindChild("FirePoint").gameObject; obj_data.RightFirePoint = obj_data.RightBattery.transform.FindChild("FirePoint").gameObject; FirePointcontroller temp1 = obj_data.LeftBattery.transform.FindChild("FirePoint").gameObject.AddComponent <FirePointcontroller>(); FirePointcontroller temp2 = obj_data.RightBattery.transform.FindChild("FirePoint").gameObject.AddComponent <FirePointcontroller>(); temp1.Init(false, true); temp2.Init(false, true); obj_data.RightRein = obj.transform.FindChild("Controller (right)").gameObject; obj_data.LeftRein = obj.transform.FindChild("Controller (left)").gameObject; //obj_data.Camera = obj.transform.FindChild("Camera (head)").gameObject; hpview = obj.AddComponent <HP_View>(); roleViews.Add(value.ID, hpview); hpview.role = value as Role; // Debug.Log("<color.red>obj_data._weapon " + obj_data._weapon+"******************</color>"); hpview.Init(); obj_data.SenceObject = value; DefaultWeapon = obj_data._player.useWeapon.Name; PlayerData = obj_data; SenceObjects.Add(value.ID, obj_data); send_player.Add(value.ID, obj_data); obj.transform.parent = this.transform; obj.name = "id_" + value.ID.ToString() + "_" + value.Name; //network_server.isScreening = false; break; case ObjectType.AI: ai = value as AI; //Debug.Log("<color=yellow>"+ai.Position+"</color>"); obj = null; switch (ai.ai_type) { case AIType.Lithe: obj = Instantiate(AiPrefabs[ai.Index], ai.Position, ai.Rotation) as GameObject; break; case AIType.Attack: obj = Instantiate(AiPrefabs[ai.Index], ai.Position, ai.Rotation) as GameObject; Aiattack_more = ai.Index; break; case AIType.LifeAndAttack: if (Boss == null) { obj = Instantiate(AiPrefabs[ai.Index], ai.Position, ai.Rotation) as GameObject; } else { obj = Boss; } Aiattack_max = ai.Index; // 初始化 AI只为大怪添加血条 hpview = obj.AddComponent <HP_View>(); roleViews.Add(value.ID, hpview); hpview.role = value as AI; hpview.Init(); break; case AIType.SmartAI: obj = Instantiate(AiPrefabs[ai.Index], ai.Position, ai.Rotation) as GameObject; Aiattack_min = ai.Index; break; case AIType.Stone: obj = Instantiate(StonePrefabs[ai.Index], ai.Position, ai.Rotation) as GameObject; break; default: Debug.LogError("没有对应的aitype"); break; } obj.SetActive(true); obj_data = obj.AddComponent <SenceGameObject>(); obj_data.EnemyEffect = obj.transform.FindChild("Enemy Explode").gameObject; obj_data.gameObject.tag = SenceGameObject.AI_TAG; if (ai.ai_type != AIType.Stone) { obj.AddComponent <Follo>(); obj.GetComponent <BoxCollider>().size = new Vector3(5f, 2.5f, 5f); } obj_data.SenceObject = value; SenceObjects.Add(value.ID, obj_data); obj.transform.parent = this.transform; obj.name = "id_" + value.ID.ToString() + "_" + value.Name; break; case ObjectType.Bullet: bullet = value as Bullet; strs = bullet.Name.Split('_'); id = int.Parse(strs[0]); bullet.Name = strs[1]; obj_data = CreateBullet(bullet, false); //Debug.Log(SenceObjects[id]._pc_man.Index+">>>>>"+Aiattack_min+">>>>>"+Aiattack_more+">>>>>>"+Aiattack_max); /*生成敌机子弹时播放音效*/ if (SenceObjects.ContainsKey(id) && SenceObjects[id]._pc_man.Index == Aiattack_more) { // Audiocontroller.instans.PlayGameAudio("Ss01"); } if (SenceObjects.ContainsKey(id) && SenceObjects[id]._pc_man.Index == Aiattack_max) { // Audiocontroller.instans.PlayGameAudio("kehuan"); } if (SenceObjects.ContainsKey(id) && SenceObjects[id]._pc_man.Index == Aiattack_min) { // Audiocontroller.instans.PlayGameAudio("Ss02"); } if (SenceObjects.ContainsKey(id)) { //SenceObjects[id].transform.FindChild("Enemy").FindChild("FireFlower").gameObject.SetActive(true); if (SenceObjects[id]._pc_man.ai_type != AIType.LifeAndAttack) { if (SenceObjects[id].GetComponentInChildren <LookAtPlayer>()) { obj_data.gameObject.transform.position = SenceObjects[id].GetComponentInChildren <LookAtPlayer>().gameObject.transform.position; } else { Debug.LogError("没有找到lookatplayer"); obj_data.gameObject.transform.position = SenceObjects[id].transform.position; } } else { Debug.LogError("生成子弹时找不到对应的发射点"); obj_data.gameObject.transform.position = value.Position; } //控制开火特效 if (SenceObjects[id] != null && SenceObjects[id].GetComponentInChildren <LookAtPlayer>() && SenceObjects[id]._pc_man.ai_type != AIType.Stone) { //Debug.Log("<color=yellow>"+SenceObjects[id].name+"</color>"); SenceObjects[id].GetComponentInChildren <LookAtPlayer>().isFire = true; } else { Debug.LogError("没有找到;LookAtPlayer;"); } } else { Debug.LogError("生成子弹时找不到对应的发射点"); obj_data.gameObject.transform.position = value.Position; } obj_data.gameObject.transform.rotation = value.Rotation; ray = new Ray(obj_data.transform.position, obj_data.transform.forward); if (Physics.Raycast(ray, out hit) && hit.transform.gameObject.CompareTag(SenceGameObject.PLAYER_TAG) && !HurtPoints.ContainsKey(obj_data.SenceObject.ID)) { HurtPoints.Add(obj_data.SenceObject.ID, hit.point); } obj_data.gameObject.GetComponent <Rigidbody>().AddForce(obj_data.transform.forward * MsgCenter.LUACH_FORCE * 2); obj_data.gameObject.tag = SenceGameObject.AI_BULLET_TAG; Destroy(obj_data.gameObject, 10f); //SenceObjects.Add(value.ID, obj_data); break; case ObjectType.PlayerBullet: //bullet = value as Bullet; //obj_data = CreateBullet(bullet,false); //obj_data.gameObject.transform.position = value.Position; //obj_data.gameObject.transform.rotation = value.Rotation; //SenceObjects.Add(value.ID, obj_data); break; case ObjectType.Weapon: // if (value.state != ObjectState.Destroy) { string temppath = dropOut.ReadXML(value.Name); GameObject tempobj = Resources.Load(temppath) as GameObject; // Debug.Log("<color=yellow>生成掉;落物" + value.Name +value.Position+ "</color>"); GameObject OBJ = Instantiate(tempobj, value.Position, value.Rotation) as GameObject; OBJ.AddComponent <BOX_co>(); BoxCollider box = OBJ.GetComponent <BoxCollider>(); box.center = Vector3.zero; box.size = Vector3.one; SenceGameObject objdate = OBJ.AddComponent <SenceGameObject>(); objdate.SenceObject = value; SenceObjects.Add(value.ID, objdate); //OBJ.transform.position = value.Position; //OBJ.transform.rotation = value.Rotation; OBJ.SetActive(true); } break; case ObjectType.UI: UIMenu ui = value as UIMenu; SenceGameObject mune_data = Recever.rInstance.DisplayMenu(ui.IsStart); if (ui.IsStart) { GameState = Datas.GameState.Start; } else { GameState = Datas.GameState.End; } mune_data.SenceObject = ui; SenceObjects.Add(mune_data.SenceObject.ID, mune_data); if (ui.PageTab != null && sort.Count <= 10) { sort.Add(ui.PageTab); } else { Debug.Log("<color=red>分数数组长度" + sort.Count + "</color>"); } if (ui.Name != null && rankingname.Count <= 10) { rankingname.Add(ui.Name); } else { Debug.Log("<color=red>名字数组长度" + rankingname.Count + "</color>"); } break; case ObjectType.Ranking: ranking = value as Ranking; obj = new GameObject(); obj_data = obj.AddComponent <SenceGameObject>(); obj_data.SenceObject = ranking; SenceObjects.Add(ranking.ID, obj_data); break; case ObjectType.GuidedMissile: GuidedMissile gu = value as GuidedMissile; Debug.Log(gu.type); GameObject guided = Instantiate(Bullets["weapon3"]); // guided.AddComponent<Collider_items>(); obj_data = guided.AddComponent <SenceGameObject>(); obj_data.SenceObject = value; guided.tag = SenceGameObject.PLAYER_BULLET_TAG; //if(gu.Name == "right") //{ // guided.GetComponent<Rigidbody>().velocity = PlayerData.RightRein.transform.forward; //}else{ // guided.GetComponent<Rigidbody>().velocity = PlayerData.LeftRein.transform.forward; //} guided.transform.position = gu.Position; Guided guid = guided.AddComponent <Guided>(); if (gu.target_id == null || !SenceObjects.ContainsKey(gu.target_id)) { guid.Target = null; } else { //导弹目标为掉落物时没有爆炸效果 if (SenceObjects[gu.target_id].type != ObjectType.Weapon) { obj_data.EnemyEffect = guided.transform.FindChild("Enemy Explode").gameObject; } //设置导弹的目标,及与目标对应,一起消失 guid.Target = SenceObjects[gu.target_id].transform; if (!guideddestroy.ContainsKey(gu.target_id)) { guideddestroy.Add(gu.target_id, guided); } } SenceObjects.Add(gu.ID, obj_data); break; } } } }
public void LuachBullet(SenceGameObject target_data, GameObject FirePoint) { Bullet bullet = new Bullet(-1, target_data._pc_man.useWeapon.Name, target_data._pc_man.Attack, FirePoint.transform.position, FirePoint.transform.rotation, ObjectState.None, ObjectType.Bullet, true); SenceGameObject bullet_data = MsgCenter.Instance.CreateBullet(bullet, target_data._pc_man.ID, true); target_data.LeftFlower.SetActive(true); target_data.RightFlower.SetActive(true); switch (target_data._pc_man.Index) { case 0: Audiocontroller.instans.PlayGameAudio("Ss01"); /*第一种AI发射子弹声音*/ break; case 1: Audiocontroller.instans.PlayGameAudio("Ss02"); /*第二种AI发射子弹声音*/ break; case 2: Audiocontroller.instans.PlayGameAudio("kehuan"); /*第三种AI发射子弹声音*/ break; default: Debug.LogError("AI发射子弹对应声音错误 "); break; } Rigidbody rig1 = bullet_data.gameObject.GetComponent <Rigidbody>(); bullet_data.transform.position = FirePoint.transform.position; bullet_data.gameObject.SetActive(true); _ray = new Ray(FirePoint.transform.position, MsgCenter.Instance.PlayerData.transform.position - FirePoint.transform.position); if (Physics.Raycast(_ray, out _hit, 10000)) { RaycastHit[] casthits = Physics.RaycastAll(_ray); if (casthits[0].collider.CompareTag(SenceGameObject.PLAYER_TAG)) { if (MsgCenter.Instance.HurtPoints.ContainsKey(bullet_data.SenceObject.ID)) { MsgCenter.Instance.HurtPoints[bullet_data.SenceObject.ID] = casthits[0].point; } else { MsgCenter.Instance.HurtPoints.Add(bullet_data.SenceObject.ID, casthits[0].point); } } else if (casthits[1].collider.CompareTag(SenceGameObject.PLAYER_TAG)) { if (MsgCenter.Instance.HurtPoints.ContainsKey(bullet_data.SenceObject.ID)) { MsgCenter.Instance.HurtPoints[bullet_data.SenceObject.ID] = casthits[1].point; } else { MsgCenter.Instance.HurtPoints.Add(bullet_data.SenceObject.ID, casthits[1].point); } } } rig1.AddForce(FirePoint.transform.forward * MsgCenter.LUACH_FORCE); //Debug.Log(bullet_data.gameObject.name); }