Example #1
0
 private void OnTriggerEnter2D(Collider2D collision)
 {
     if (collision.tag == "Friend" &&
         indexFromHead == 0)
     {
         FriendMover cfm = collision.GetComponent <FriendMover>();
         if (cfm.state == eState.Floating)
         {
             friendsManager.AttachFriend(cfm);
         }
         else if (6 < cfm.indexFromHead)
         {
             friendsManager.AttackedAt(cfm);
             //collision.GetComponent<FriendMover>().Die();
         }
     }
     else if (collision.tag == "meteo")
     {
         if (state == eState.Moving && !isWounded)
         {
             collision.GetComponent <CrushMeteo>().Crush();
             if (Item_Effect.b_Crown)
             {
                 return;
             }
             else
             {
                 //Die();
                 friendsManager.AttackedAt(this);
             }
         }
     }
 }
Example #2
0
    void Awake()
    {
        activeBoltsObj   = new List <GameObject>();
        inactiveBoltsObj = new List <GameObject>();

        //meteoManager = GameObject.Find("GameManager").GetComponent<newMeteo>();

        friendMover = transform.GetComponentInParent <FriendMover>();

        for (int i = 0; i < maxBolts; i++)
        {
            GameObject bolt = (GameObject)Instantiate(BoltPrefab);

            bolt.transform.parent = transform;

            // Initialize our lightning with a preset number of max segments
            bolt.GetComponent <LightningBolt>().Initialize(10);
            bolt.SetActive(false);

            // Store in our inactive list
            inactiveBoltsObj.Add(bolt);
        }

        audio = GetComponent <AudioSource>();
    }
Example #3
0
    private void Awake()
    {
        friendMover          = GetComponentInParent <FriendMover>();
        barrierImage         = GetComponent <SpriteRenderer>();
        barrierImage.enabled = false;

        audio = GetComponent <AudioSource>();

        isTurnedOn = false;
    }
Example #4
0
    private void Awake()
    {
        for (int i = 0; i < MaxNumOfSpikeBomb; ++i)
        {
            spikeBomb = Instantiate(SpikeBombPrefab).GetComponent <SpikeBomb>();
            spikeBomb.transform.parent = transform;
            spikeBomb.gameObject.SetActive(false);
        }

        friendMover = GetComponentInParent <FriendMover>();
        audio       = GetComponent <AudioSource>();
    }
Example #5
0
    private void Awake()
    {
        for (int i = 0; i < MaxNumOfStar; ++i)
        {
            GameObject star = Instantiate(StarPrefab);
            star.transform.parent = transform;
            star.SetActive(false);
        }

        friendMover = GetComponentInParent <FriendMover>();
        audio       = GetComponent <AudioSource>();
    }
Example #6
0
    private void Awake()
    {
        for (int i = 0; i < MaxNumOfMissile; ++i)
        {
            GameObject missile = Instantiate(MissilePrefab);
            missile.transform.parent = transform;
            missile.SetActive(false);
        }

        friendMover = GetComponentInParent <FriendMover>();
        audio       = GetComponent <AudioSource>();

        elapsedTime = .0f;
    }
Example #7
0
    private void Awake()
    {
        MovingFriends        = new List <FriendMover>();
        FloatingFriends      = new List <FriendMover>();
        InActiveFriends      = new List <FriendMover>();
        changeDirectionPoint = new LinkedList <Vector2>();

        Transform friendPoolHolder = GameObject.Find("FriendPoolHolder").transform;

        if (friendPoolHolder == null)
        {
            friendPoolHolder = (new GameObject("FriendPoolHolder")).transform;
        }

        // Set start Charater
        GameObject f = GameObject.Find("StartFriend");

        f.transform.parent = friendPoolHolder;
        FriendMover fm = f.GetComponent <FriendMover>();

        //fm.isMoving = true;
        fm.state         = FriendMover.eState.Moving;
        fm.indexFromHead = 0;
        fm.Speed         = MovingSpeedAtStart;
        fm.CircleCenter  = (Vector2)transform.position + Vector2.right * fm.Radius;

        MovingFriends.Add(fm);

        // Pre-make objects to pool
        int NumberOfFriends = FriendsPrefab.Length;

        for (int i = 50 / NumberOfFriends; 0 < i; i--)
        {
            for (int j = NumberOfFriends - 1; 0 <= j; j--)
            {
                GameObject friend = Instantiate(FriendsPrefab[j]);
                friend.transform.parent = friendPoolHolder;
                friend.SetActive(false);
                InActiveFriends.Add(friend.GetComponent <FriendMover>());
            }
        }

        InvokeRepeating("SpawnFriends", 1.5f, 5.0f);
    }
Example #8
0
    public void AttackedAt(FriendMover attackedFriend)
    {
        // 한마리만 남았을떄
        if (MovingFriends.Count == 1)
        {
            if (attackedFriend.health > 1)
            {
                attackedFriend.health--;
                return;
            }
            GameObject.Find("FriendPoolHolder").SetActive(false);
            score_Panel.SetActive(true);
            GameObject.Find("GameManager").SetActive(false);
        }
        // 두마리 이상
        else
        {
            int idx = -1;
            if (attackedFriend.indexFromHead == 0) // 내가 머리인 경우
            {
                if (attackedFriend.health > 1)
                {
                    attackedFriend.health--;
                    return;
                }
                idx = MovingFriends.Count - 2;
            }
            else
            {
                idx = MovingFriends.IndexOf(attackedFriend);
            }

            for (int i = idx; 0 <= i; --i)
            {
                MovingFriends[i].Die();
            }
            for (int i = idx + 1; i < MovingFriends.Count; ++i)
            {
                MovingFriends[i].Flicker(2.0f);
            }
            //MovingFriends.RemoveRange(0, idx + 1);
        }
    }
Example #9
0
    void SpawnFriends()
    {
        if (InActiveFriends.Count <= 0)
        {
            return;
        }

        float x = Random.Range(-5f, 5f);
        float y = Random.Range(-9f, 9f);

        int         cha       = Random.Range(0, InActiveFriends.Count - 1); //InActiveFriends.Count - 3;
        FriendMover newFriend = InActiveFriends[cha];

        InActiveFriends.RemoveAt(cha);

        newFriend.gameObject.SetActive(true);
        newFriend.transform.position = new Vector3(x, y);
        newFriend.state = FriendMover.eState.Floating;
        FloatingFriends.Add(newFriend);
    }
Example #10
0
    public void AttachFriend(FriendMover newFriend)
    {
        // Scoring
        ScoringManager.save_Score += 100;

        // FloatingFriends 에서 찾고, 제거하고
        FloatingFriends.Remove(newFriend);

        // MovingFriends에 넣고
        FriendMover head = MovingFriends[MovingFriends.Count - 1];

        float thetaAhead = DistanceBetweenFriends / head.Radius;

        if (head.IsClockwise)
        {
            thetaAhead *= -1.0f;
        }

        Vector2 centerToCurrent = (Vector2)head.transform.position - head.CircleCenter;
        Vector2 centerToTarget  = new Vector2(
            Mathf.Cos(thetaAhead) * centerToCurrent.x - Mathf.Sin(thetaAhead) * centerToCurrent.y,
            Mathf.Sin(thetaAhead) * centerToCurrent.x + Mathf.Cos(thetaAhead) * centerToCurrent.y
            );

        newFriend.transform.position = head.CircleCenter + centerToTarget;
        newFriend.transform.rotation = Quaternion.identity;
        FriendMover newFriendMover = newFriend.GetComponent <FriendMover>();

        newFriendMover.Speed         = head.Speed;
        newFriendMover.state         = FriendMover.eState.Moving;
        newFriendMover.indexFromHead = 0;
        newFriendMover.CircleCenter  = head.CircleCenter;
        newFriendMover.IsClockwise   = head.IsClockwise;
        MovingFriends.Add(newFriendMover);

        for (int i = MovingFriends.Count - 2; 0 <= i; --i)
        {
            MovingFriends[i].indexFromHead++;
        }
    }
Example #11
0
    private void Awake()
    {
        bullets          = new GameObject[BulletNum];
        bulletsDirection = new Vector3[BulletNum];
        Quaternion rot;

        for (int i = 0; i < BulletNum; ++i)
        {
            rot        = Quaternion.Euler(.0f, .0f, i * (360.0f / BulletNum));
            bullets[i] = Instantiate(BulletPrefab, Vector3.zero, rot);
            bullets[i].transform.parent = transform;
            bullets[i].SetActive(false);

            bulletsDirection[i] = rot * Vector3.right;
        }

        friendMover = GetComponentInParent <FriendMover>();

        audio = GetComponent <AudioSource>();

        SetBulletColor(Color.yellow);
    }
Example #12
0
    private void Awake()
    {
        lasers          = new GameObject[LaserNum];
        lasersDirection = new Vector3[LaserNum];
        Quaternion rot;

        for (int i = 0; i < LaserNum; ++i)
        {
            rot       = Quaternion.Euler(.0f, .0f, i * (360.0f / LaserNum));
            lasers[i] = Instantiate(LaserPrefab, Vector3.zero, rot);
            lasers[i].transform.parent = transform;
            lasers[i].SetActive(false);

            lasersDirection[i] = rot * Vector3.right;
        }

        friendMover = GetComponentInParent <FriendMover>();
        audio       = GetComponent <AudioSource>();

        elapsedTime = .0f;

        laserColor = new Color(77.0f / 255, 255.0f / 255, 184.0f / 255);
        //SetLaserColor(new Color(77.0f/255, 255.0f/255, 184.0f/255));
    }