コード例 #1
0
    private void Update()
    {
        if (_player.Energy <= 0)
        {
            return;
        }
        if (Input.GetKey(KeyCode.DownArrow))
        {
            _isCharge = true;
            var asts  = _astFactory.FieldAsteroids;
            var count = 0;
            _nowLockonTime = Mathf.Max(0, _nowLockonTime - Time.deltaTime);
            // TODO: かなり処理負荷がキツい箇所になっているのでもっと数を出したい場合は見直しが必要
            foreach (var ast in asts)
            {
                if (!(this.InCamera(ast.gameObject) && count < _maxBullet))
                {
                    _targets.Remove(ast);
                    continue;
                }
                count++;
                if (_targets.Contains(ast))
                {
                    continue;
                }
                if (_nowLockonTime == 0)
                {
                    _targets.Add(ast);
                    SoundManager.Instance.Play(SoundClip.LOCKON, false);
                    _nowLockonTime = _lockonTime;
                }
            }
            return;
        }

        // レーザー発射判定~発射
        if (!_isCharge)
        {
            return;
        }
        _player.AddDamage(100);
        foreach (var ast in _targets)
        {
            if (ast == null)
            {
                continue;
            }
            _player.AddDamage(1);
            var laser = Instantiate(
                _laser,
                _player.transform.position,
                _player.transform.rotation * Quaternion.Euler(Random.Range(-90, 90), Random.Range(-90, 90), Random.Range(-90, 90)));
            laser.Target = ast.gameObject;
        }
        _targets.Clear();
        _isCharge = false;
    }
コード例 #2
0
ファイル: Asteroid.cs プロジェクト: xenoPot/AstBreaker_source
 private void OnCollisionEnter(Collision other)
 {
     if (other.gameObject.tag == TagList.Player)
     {
         var isDestroy = this.AddDamage(_player.NowAttackPower);
         if (!isDestroy)
         {
             _player.AddDamage(_damage);
         }
         _player.PlayDamageEffect();
     }
 }