コード例 #1
0
    // Use this for initialization
    void Start()
    {
        int     spawnCount = m_boxesPerX * m_boxesPerY * m_boxesPerZ;
        Vector3 delta      = (m_maxSpawn - m_minSpawn);

        delta = new Vector3(delta.x / m_boxesPerX, delta.y / m_boxesPerY, delta.z / m_boxesPerZ);
        float   rmv        = ((1.0f - m_shrinkBox) / 2.0f);
        Vector3 lowOffset  = delta * rmv;
        Vector3 highOffset = delta - lowOffset;

        for (int i = 0; i < spawnCount; ++i)
        {
            int     xLoc     = i % m_boxesPerX;
            int     yLoc     = (i / m_boxesPerX) % m_boxesPerY;
            int     zLoc     = i / (m_boxesPerX * m_boxesPerY);
            Vector3 xyzDelta = new Vector3(xLoc * delta.x, yLoc * delta.y, zLoc * delta.z);

            GameObject made = MakeAt(RandVec(m_minSpawn + lowOffset + xyzDelta, m_minSpawn + highOffset + xyzDelta), gameObject, "RandomPlacement|" + i);
            made.AddComponent <CapsuleCollider>();
            GameObject spawnedParticles = Instantiate(m_particlePrefab);
            spawnedParticles.transform.SetParent(made.transform);
            spawnedParticles.transform.localPosition = Vector3.zero;
            spawnedParticles.transform.localScale    = Vector3.one;
            BurnableScript bs = made.AddComponent <BurnableScript>();
            bs.m_burnOutDuration = m_burnoutDuration;
            bs.m_fireAmount      = m_fireAmount;
            made.tag             = "Tree";
            made.layer           = LayerMask.NameToLayer("Tree");
        }
    }
コード例 #2
0
 private void OnTriggerStay(Collider other)
 {
     if (m_breath.IsBreathingFire())
     {
         m_camera.LowPriorityShake(m_shakeDuration, m_fireShakeIntensity);
         BurnableScript burnable = other.gameObject.GetComponent <BurnableScript>();
         if (!burnable.IsMaxFire())
         {
             burnable.AddFire(Time.deltaTime);
             burnable.Burning();
         }
     }
 }