void GenerateBombFieldSphere(Vector3 position) { BombBehaviour bomb = Resources.Load <BombBehaviour>(@"Prefabs\Bomb"); float size = distance; float density = 1f / 175f; int count = (int)(size * density); float interval = size / count; Vector3 start = position; for (int i = (int)(count * .75f); i < count; i++) { float radius = i * interval; int c = (int)(radius / size * count); for (int j = 0; j < c; j++) { float cosa = Mathf.Cos(3.14f / c * j + i); float sina = Mathf.Sin(3.14f / c * j + i); for (int k = 0; k < c; k++) { float cosb = Mathf.Cos(3.14f / c * k - 1.57f); float sinb = Mathf.Sin(3.14f / c * k - 1.57f); float x = radius * cosa * sinb; float y = radius * sina * sinb; float z = radius * cosb; Instantiate(bomb, start + new Vector3(x, y, z), Quaternion.identity); } } } }
void CmdCreateStandardBomb(int slotID, float damage, float effect, float range) { GameObject defaultBomb = (GameObject)Instantiate(bombStandart, transform.position, transform.rotation); defaultBombBeh = defaultBomb.GetComponent <BombBehaviour>(); defaultBombBeh.setDamage(damage); defaultBombBeh.setEffect(effect); defaultBombBeh.setRange(range); NetworkServer.Spawn(defaultBomb); }
public void SetBomb(Vector3Int position, BombBehaviour bomb) { //すでにある場合は設置しない if (IsBomb(position)) { return; } gridInfo.SetPositionProperty(position, keystr_Bomb, EXIST); bombPosition.Add(position, bomb); }
void PlantBomb() { if (!isBombActive) { GameObject bombGo = Instantiate(bomb, this.transform.position, Quaternion.identity, this.transform.parent); BombBehaviour bombObj = bombGo.GetComponent <BombBehaviour>(); if (bombObj != null) { isBombActive = true; BombBehaviour.OnBombPlanted += BombObj_OnBombExploded; } } }
void OnCollisionEnter(Collision col) { //Debug.Log("Collide " + col.gameObject.tag); if (col.gameObject.tag == "Bomb") { //Debug.Log("Collided with Bomb"); Rigidbody bombRigidBody = col.gameObject.GetComponent <Rigidbody>(); BombBehaviour behaviour = col.gameObject.GetComponent <BombBehaviour>(); if (canKickBomb && !behaviour.pushed) { switch (walkingTowards) { case "left": if (transform.position.x - bombRigidBody.transform.position.x <= 1.2) { behaviour.pushed = true; bombRigidBody.isKinematic = false; bombRigidBody.AddForce(-transform.right * kickSpeed); } break; case "right": if (bombRigidBody.transform.position.x - transform.position.x <= 1.2) { behaviour.pushed = true; bombRigidBody.isKinematic = false; bombRigidBody.AddForce(transform.right * kickSpeed); } break; case "up": if (bombRigidBody.transform.position.y - transform.position.y <= 1.2) { behaviour.pushed = true; bombRigidBody.isKinematic = false; bombRigidBody.AddForce(transform.forward * kickSpeed); } break; case "down": if (transform.position.y - bombRigidBody.transform.position.y <= 1.2) { behaviour.pushed = true; bombRigidBody.isKinematic = false; bombRigidBody.AddForce(-transform.forward * kickSpeed); } break; } } } }
void DropBomb() { if (Bomb && FireKeyPressed && bombCount > 0 && sittingBomb == null) { GameObject bomb = Instantiate(Bomb, DropBombPosition, transform.rotation); BombBehaviour bombBehaviour = bomb.GetComponent <BombBehaviour>(); if (bombBehaviour) { bombBehaviour.Initialize(gameObject, firePower, bombPierce); bombPlace.pitch = originalPitch + Random.Range(-pitchOffset, pitchOffset); bombPlace.Play(); } bombCount--; } }
private void Explode() { BombBehaviour bombStats = gameObject.GetComponent <BombBehaviour>(); Vector2 delta; // Explosion centered at the bomb CreateParticleEffect(transform.position, bombStats.getEffect()); float radius = bombStats.getRange(); // Explosions east for (int i = 1; i <= NumberOfExplosionsInEachDirection; i++) { delta = new Vector2(i * radius, 0f); CreateParticleEffect((Vector2)transform.position + delta, bombStats.getEffect()); //create circle and check player collisions bombStats.checkCollison((Vector2)transform.position + delta); } // Explosions north for (int i = 1; i <= NumberOfExplosionsInEachDirection; i++) { delta = new Vector2(0f, i * radius); CreateParticleEffect((Vector2)transform.position + delta, bombStats.getEffect()); bombStats.checkCollison((Vector2)transform.position + delta); } // Explosions west for (int i = 1; i <= NumberOfExplosionsInEachDirection; i++) { delta = new Vector2(-i * radius, 0f); CreateParticleEffect((Vector2)transform.position + delta, bombStats.getEffect()); bombStats.checkCollison((Vector2)transform.position + delta); } // Explosions south for (int i = 1; i <= NumberOfExplosionsInEachDirection; i++) { delta = new Vector2(0f, -i * radius); CreateParticleEffect((Vector2)transform.position + delta, bombStats.getEffect()); bombStats.checkCollison((Vector2)transform.position + delta); } Destroy(gameObject); }
void Shoot() { GameObject bombPrefab = ProxyParent.GetComponent <RedTowerData>().bomb; Vector3 startPosition = gameObject.transform.position; Vector3 targetPosition = startPosition; targetPosition.y -= 6f; startPosition.z = bombPrefab.transform.position.z; targetPosition.z = bombPrefab.transform.position.z; GameObject newBomb = (GameObject)Instantiate(bombPrefab); newBomb.transform.position = startPosition; BombBehaviour bombComp = newBomb.GetComponent <BombBehaviour>(); bombComp.startPosition = startPosition; bombComp.targetPosition = targetPosition; }
public override void CompleteCreate() { GameObject go = GameObject.Find("Bomb" + 2); if (go == null) { return; } GameObject bomb = GameObject.Instantiate(go, GetLocation(), go.transform.rotation); mTarget = bomb; mBombBehaviour = bomb.GetComponent <BombBehaviour>(); var parent = NetworkManagerClient.sInstance.GetGameObject(mParentNetworkId); if (parent != null) { ((CActor)parent)?.mActorBehaviour?.PlayAnimation("Bomb"); } }
public void CreateBombHex(int x, int y) { GameObject socket = hexSockets[x, y]; HexType type = RandomType(); GameObject go = Instantiate(type.prefab, socket.transform.position + Vector3.up * 4.0f, type.prefab.transform.rotation); go.transform.parent = hexParent.transform; go.name = "Hex(" + x + "," + y + ")"; board[x, y] = new Hex(go, type, x, y); HexBehaviour hexBehaviour = go.GetComponent <HexBehaviour>(); hexBehaviour.hexReference = board[x, y]; GameObject bombGO = Instantiate(bombPrefab, socket.transform.position + Vector3.up * 4.11f + Vector3.right * 0.07f, Quaternion.identity, go.transform); BombBehaviour bb = bombGO.GetComponent <BombBehaviour>(); bombsReferences.Add(bb); bb.Init(bombStartingCountDown); hexBehaviour.SetPosition(socket.transform.position); }
void GenerateBombField(Vector3 position) { BombBehaviour bomb = Resources.Load <BombBehaviour>(@"Prefabs\Bomb"); float size = distance; float density = 1f / 200f; int count = (int)(size * density); float interval = size / count; Vector3 start = center - position * .6f + new Vector3(size / -2, size / -2, size / -2); for (int i = 0; i < count; i++) { float x = i * interval; for (int j = 0; j < count; j++) { float y = j * interval; for (int k = 0; k < count; k++) { Instantiate(bomb, start + new Vector3(x, y, k * interval), Quaternion.identity); } } } }
//爆弾ボタン入力 void BombController() { if (inputBombFlag) { if (Input.GetButtonDown("Submit")) { //爆弾生成上限を超えている、あるいはもうすでに爆弾がある場合はスキップ if (bombs.Count >= numBomb || fieldController.IsBomb(GetPosition())) { return; } //爆弾生成 BombBehaviour bomb = Instantiate(prefabBombBehaviour, gameObject.transform.position + (Vector3)bombPosOffset, Quaternion.identity, transform.parent); bomb.setFire(numFire, this); bombs.Add(bomb); fieldController.SetBomb(GetPosition(), bomb); inputBombFlag = false; } } else { inputBombFlag = true; } }
private void Update() { if (Input.GetMouseButtonDown(0)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hitData; if (Physics.Raycast(ray, out hitData, 1000)) { if (hitData.transform.tag == "Floor") { if (availableBombs.Count != 0) { Vector3 targetPosition = hitData.point;// new Vector3(hitData.point.x, transform.position.y, hitData.point.z); BombBehaviour targetBomb = availableBombs[0]; usedBombs.Add(targetBomb); availableBombs.RemoveAt(0); targetBomb.transform.position = targetPosition; targetBomb.gameObject.SetActive(true); } } } } }
//爆破後に爆弾数を戻す処理 public void DeleteBomb(BombBehaviour bomb, Vector3Int pos) { fieldController.DeleteBomb(pos); bombs.Remove(bomb); }