Exemplo n.º 1
0
    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);
                }
            }
        }
    }
Exemplo n.º 2
0
    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);
    }
Exemplo n.º 3
0
    public void SetBomb(Vector3Int position, BombBehaviour bomb)
    {
        //すでにある場合は設置しない
        if (IsBomb(position))
        {
            return;
        }

        gridInfo.SetPositionProperty(position, keystr_Bomb, EXIST);
        bombPosition.Add(position, bomb);
    }
Exemplo n.º 4
0
 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;
         }
     }
 }
Exemplo n.º 5
0
    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;
                }
            }
        }
    }
Exemplo n.º 6
0
 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);
    }
Exemplo n.º 8
0
    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;
    }
Exemplo n.º 9
0
    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");
        }
    }
Exemplo n.º 10
0
    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);
    }
Exemplo n.º 11
0
    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);
                }
            }
        }
    }
Exemplo n.º 12
0
 //爆弾ボタン入力
 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;
     }
 }
Exemplo n.º 13
0
    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);
                    }
                }
            }
        }
    }
Exemplo n.º 14
0
 //爆破後に爆弾数を戻す処理
 public void DeleteBomb(BombBehaviour bomb, Vector3Int pos)
 {
     fieldController.DeleteBomb(pos);
     bombs.Remove(bomb);
 }