コード例 #1
0
ファイル: Spawner.cs プロジェクト: Jfriffoa/BioNanoBot-RTR
    public void Spawn()
    {
        float y = Random.Range(minY, maxY);
        float x = Random.Range(minX, maxX);

        if (spawnOutOfCamera)
        {
            Vector2 whereToSpawn = m_camera.WorldToScreenPoint(new Vector2(x, y));

            if (!m_camera.pixelRect.Contains(whereToSpawn) && !GetComponent <Collider>().isTrigger)
            {
                ObjectPool.Instantiate(toSpawn, new Vector2(x, y), toSpawn.transform.rotation, transform);
            }
        }
        else
        {
            GameObject go = ObjectPool.Instantiate(toSpawn, new Vector2(x, y), toSpawn.transform.rotation, transform);

            //Specific lines to make CircularMovement works correctly
            CircularMovement cm = go.GetComponent <CircularMovement>();
            if (cm != null)
            {
                cm.SetPivot(new Vector2(x, y));
                //Debug.Log("OX: " + x + " OY: " + y + " X: " + cm.Pivot.x + " Y: " + cm.Pivot.y);
            }
        }

        enemiesSpawned++;
    }
コード例 #2
0
    public void RandomDogsPosition()
    {
        var newPositions = new Vector3[currentDogsByScenes[0].Dogs.Count];

        for (int i = 0; i < newPositions.Length; i++)
        {
            newPositions[i] = GetNewDogRandomPosition();
        }

        foreach (var dogsByScene in currentDogsByScenes)
        {
            var dogIndex = 0;
            foreach (var dog in dogsByScene.Dogs)
            {
                var positionAssigned = false;
                var counter          = 0;
                while (!positionAssigned && counter < RETRIES)
                {
                    var dogInitialPos = newPositions[dogIndex];
                    dog.transform.position     = dogInitialPos;
                    Physics.autoSyncTransforms = true;
                    Physics.SyncTransforms();
                    if (PositionIsSafe(dog, objectAssigned))
                    {
                        objectAssigned.Add(dog);
                        positionAssigned = true;
                    }
                    else
                    {
                        newPositions[dogIndex] = GetNewDogRandomPosition();
                    }

                    counter++;
                }


                LinearMovement linear = dog.GetComponent <LinearMovement>();
                if (linear != null)
                {
                    linear.SetNewStartPosition(dog.transform.position);
                }

                CircularMovement circularMovement = dog.GetComponent <CircularMovement>();
                if (circularMovement != null)
                {
                    circularMovement.Reset();
                }

                dogIndex++;
            }
        }
    }
コード例 #3
0
ファイル: Enemy.cs プロジェクト: Jfriffoa/BioNanoBot-RTR
    void Kill()
    {
        SineMovement sm = GetComponent <SineMovement>();

        if (sm != null)
        {
            sm.enabled = false;
        }

        StraightMovement strm = GetComponent <StraightMovement>();

        if (strm != null)
        {
            strm.enabled = false;
        }

        FollowObject fo = GetComponent <FollowObject>();

        if (fo != null)
        {
            fo.enabled = false;
        }

        CircularMovement cm = GetComponent <CircularMovement>();

        if (cm != null)
        {
            cm.enabled = false;
        }

        //Disable the renderer and the Collider
        GetComponent <SpriteRenderer>().enabled = false;
        GetComponent <Collider2D>().enabled     = false;

        if (m_particle != null)
        {
            m_particle = ObjectPool.Instantiate(m_particle, transform.position, transform.rotation);
            StartCoroutine(KillAnimation());
        }
        else
        {
            ObjectPool.Kill(gameObject);
        }
    }
コード例 #4
0
    /*IEnumerator DamagedAnimation() {
     *  for (float f = 0; f <= 1; f += 0.2f) {
     *      m_renderer.color = new Color(215f / 255 * f, 63f / 255 * f, 63f / 255 * f);
     *      Debug.Log("CHANGE: " + m_renderer.color.r + ", " + m_renderer.color.g + ", " + m_renderer.color.b);
     *      yield return new WaitForSeconds(0.1f);
     *  }
     *
     *  for (float f = 1; f >= 0; f -= 0.2f) {
     *      m_renderer.color = new Color(215f / 255 * f, 63f / 255 * f, 63f / 255 * f);
     *      Debug.Log("CHANGE BACK: " + m_renderer.color.r + ", " + m_renderer.color.g + ", " + m_renderer.color.b);
     *      yield return new WaitForSeconds(0.1f);
     *  }
     * }*/

    void Kill()
    {
        SineMovement sm = GetComponent <SineMovement>();

        if (sm != null)
        {
            sm.enabled = false;
        }

        StraightMovement strm = GetComponent <StraightMovement>();

        if (strm != null)
        {
            strm.enabled = false;
        }

        FollowObject fo = GetComponent <FollowObject>();

        if (fo != null)
        {
            fo.enabled = false;
        }

        CircularMovement cm = GetComponent <CircularMovement>();

        if (cm != null)
        {
            cm.enabled = false;
        }

        //Disable the renderer and the Collider
        GetComponent <SpriteRenderer>().enabled = false;
        GetComponent <Collider2D>().enabled     = false;

        m_particle.Play();
        StartCoroutine(KillAnimation());
    }
コード例 #5
0
    public void ResetDogPositions()
    {
        var dogIndex = 0;

        foreach (var dog in currentDogs.objects)
        {
            if (config.animatedPositions.Count <= dogIndex)
            {
                Debug.LogWarning("Total: " + config.animatedPositions.Count + "  Index: " + dogIndex);
            }
            else
            {
                dog.transform.position = config.animatedPositions[dogIndex];
            }

            CircularMovement circular = dog.GetComponent <CircularMovement>();
            if (circular != null)
            {
                circular.Reset();
            }

            dogIndex++;
        }
    }