示例#1
0
    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
    }
示例#2
0
    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);
    }