IEnumerator Meteorite() { if (photonView.IsMine) { yield return(new WaitForSeconds(1.5f)); fallPos.Clear(); allPos.Clear(); RaycastHit[] hits = Physics.BoxCastAll(new Vector3(4.5f, 0, 5f), new Vector3(6, 1, 5.5f), Vector3.up, Quaternion.identity, 1, levelMask); BombCreateData bombCreateData = new BombCreateData(); bombCreateData.vector3s = new List <Vector3>(); for (int i = -1; i < 11; i++) { for (int j = 0; j < 11; j++) { allPos.Add(new Vector3(i, 0.5f, j)); foreach (var hit in hits.Where(h => h.transform.CompareTag("Wall") || h.transform.CompareTag("BreakingWall"))) { if (new Vector3(i, 0.5f, j) == hit.transform.position) { // Debug.Log("一致"); fallPos.Add(new Vector3(i, 0.5f, j)); } } } } for (int i = 0; i < allPos.Count; i++) { for (int j = 0; j < fallPos.Count; j++) { if (allPos[i] == fallPos[j]) { allPos.RemoveAt(i); } } } for (int k = 0; k < 5; k++) { int num = Random.Range(0, allPos.Count - 1); bombCreateData.vector3s.Add(allPos[num]); allPos.RemoveAt(num); } bombCreateData.bombType = BombType(); bombCreateData.firePower = itemManager.firePower; bombCreateData.isKick = itemManager.isKick; bombCreateData.explosionNum = GManager.Instance.playerNum; string strData = JsonUtility.ToJson(bombCreateData); photonView.RPC(nameof(BombCreate), RpcTarget.All, strData); } }
private void BombCreate(string targetPoses) { BombCreateData bombCreateData = JsonUtility.FromJson <BombCreateData>(targetPoses); foreach (var targetPos in bombCreateData.vector3s) { GameObject bombClone = BombManager.Instance.BombInstantiate(new Vector3(targetPos.x + 2, 8, targetPos.z), bombId++, actorNum, bombCreateData.bombType, bombCreateData.firePower, bombCreateData.explosionNum);//, bombCreateData.isKick); GameObject effect = Instantiate(effect_skill_two, new Vector3(bombClone.transform.position.x, bombClone.transform.position.y + 0.5f, bombClone.transform.position.z), Quaternion.identity); effect.transform.SetParent(bombClone.transform); Destroy(effect, 1.2f); bombClone.transform.DOLocalMove(targetPos, 0.8f).OnComplete(() => { GameObject effect2 = Instantiate(explosion_Effect, targetPos, explosion_Effect.transform.rotation); StartCoroutine(CollisionOn(effect2)); }); } }