private void Update() { // 플레이어 정보가 따라다니도록. var playerScreenPosition = _uiSystem._uiCam.WorldToScreenPoint(_player.transform.position); playerScreenPosition.y += 80; _playerText.transform.position = playerScreenPosition; var enemyScreenPosition = _uiSystem._uiCam.WorldToScreenPoint(_enemy.transform.position); enemyScreenPosition.y += 80; _enemyText.transform.position = enemyScreenPosition; #region FOR TEST if (Input.GetKeyDown(KeyCode.S)) { _enemy.StartCoroutine("OnMoveCommanded", _player.transform.position.x); } if (Input.GetKeyDown(KeyCode.A)) { var fireInfo = new PacketInfo.EnemyFireNotify() { _enemyPositionX = _enemy.transform.position.x, _fireType = 0, _magnitude = 30, _unitVecX = 1, _unitVecY = 1 }; _enemy.StartCoroutine("OnEnemyAttackStarted", fireInfo); } #endregion }
public IEnumerator OnEnemyAttackStarted(PacketInfo.EnemyFireNotify enemyFireInfo) { var unitVec = new Vector2(enemyFireInfo._unitVecX, enemyFireInfo._unitVecY); var magnitude = enemyFireInfo._magnitude; #region MAKE ENEMY CROSSHAIR _crosshair.GetComponent <SpriteRenderer>().enabled = true; var enemyPos = new Vector2(this.transform.position.x, this.transform.position.y); var crosshairVec = unitVec; crosshairVec *= 3; _crosshair.transform.position = (this.transform.position + new Vector3(crosshairVec.x, crosshairVec.y, 0)); #endregion #region START ATTACK ANIMATION _animator.SetTrigger("Attack"); // 애니메이션이 끝날 때까지 기다림. yield return(new WaitForSeconds(1)); #endregion // 총알 발사. var bullet = Instantiate(Resources.Load("Prefabs/Bullet")) as GameObject; bullet.GetComponent <Bullet>().Fire(_crosshair.transform.position, unitVec, magnitude * 2, ExplosionType.Type1, enemyFireInfo._damage); _crosshair.GetComponent <SpriteRenderer>().enabled = false; // 잘 받았다고 서버에 알림. var enemyFireAck = new PacketInfo.EnemyFireAck() { _result = (int)ErrorCode.None }; NetworkManager.GetInstance().SendPacket(enemyFireAck, PacketInfo.PacketId.ID_EnemyFireAck); }