Beispiel #1
0
 private async void LookAt(Transform item, PlayerDodge player)
 {
     while (true)
     {
         if (Time.timeScale == 1)
         {
             if (isQuit || isStopLookAt)
             {
                 break;
             }
             if (item == null || player == null)
             {
                 break;
             }
             Vector3 diff = player.transform.position - item.position;
             diff.Normalize();
             float rot_z = Mathf.Atan2(diff.y, diff.x) * Mathf.Rad2Deg;
             if (item == null)
             {
                 break;
             }
             item.rotation = Quaternion.Euler(0f, 0f, rot_z - 90);
         }
         await Task.Delay(1);
     }
 }
Beispiel #2
0
    private void CreatePlayer()
    {
        int indexPlayer = PlayerPrefs.GetInt("index_player", 0);

        indexPlayer = Random.Range(0, characters.Length);
        if (characters == null || characters.Length <= indexPlayer)
        {
            return;
        }
        GameObject ob = Instantiate(characters[indexPlayer]);

        ob.SetActive(false);
        ob.transform.SetParent(playerParent);
        ob.transform.localScale = new Vector3(50, 50, 50);
        RectTransform rectPlayer = ob.GetComponent <RectTransform>();

        if (rectPlayer != null)
        {
            rectPlayer.anchorMin        = rectPlayer.anchorMax = new Vector2(0.5f, 0);
            rectPlayer.anchoredPosition = new Vector3(-(Screen.width / 2 + 100), 130.9f, 0);
        }
        ob.SetActive(true);
        lstObs.Add(ob);
        player = ob.GetComponent <PlayerDodge>();
        if (player != null)
        {
            player.MovetoCenter(delegate
            {
                GameObject circleOb = Instantiate(circlePrefab);
                circleOb.SetActive(false);
                circleOb.transform.SetParent(circleParent);
                circleOb.transform.localScale = Vector3.one;
                circle = circleOb.GetComponent <Circle>();
                circle.actionPlayerDead = delegate
                {
                    isPlayerDead = true;
                    PlayerDead(circle);
                };
                lstObs.Add(circleOb);
                circle.Run(delegate { RunTime(-1); ActiveText(); RandomAttack(); });
            });
        }
    }
Beispiel #3
0
    public async void Throw(PlayerDodge player, int wait_time, Action action)
    {
        if (player == null)
        {
            return;
        }
        this.player = player;
        int rdItem = Random.Range(0, imgs.Length);

        isStopLookAt = false;
        RectTransform rectItem = CreateItem(rdItem, action);

        LookAt(rectItem, player);
        await Task.Delay(wait_time);

        RectTransform rectPlayer = player.GetComponent <RectTransform>();

        int rdPhiState = Random.Range(0, 3);

        if (rdPhiState == (int)AttackState.PhiMotNua)
        {
            isStopLookAt = true;
            PhiMotNua(rectItem, rectPlayer, rdItem, action);
        }
        else if (rdPhiState == (int)AttackState.PhiCaQuangDuong)
        {
            isStopLookAt = true;
            PhiCaQuangDuong(rectItem, rectPlayer, rdItem, delegate
            {
                DestroyRectItem(null, rdItem, 400);
                action?.Invoke();
            });
        }
        else
        {
            actionCreateHelpItem?.Invoke(rectItem.gameObject, rdItem);
            PhiDuoi(rectItem, rectPlayer, rdItem, action);
        }
    }