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); } }
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(); }); }); } }
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); } }