public override void _Process(float delta)
    {
        if (_attached && _attachPoint != null)
        {
            GlobalTransform = new Transform(GlobalTransform.basis, _attachPoint.GlobalTransform.origin);
        }

        if (_grenadeTimer < _grenadeTime)
        {
            _grenadeTimer += delta;
            return;
        }
        else
        {
            if (_explosionWaitTimer <= 0)
            {
                _explosionParticles.Emitting = true;

                _grenadeMesh.Visible = false;
                _rigidShape.Disabled = true;

                Mode = RigidBody.ModeEnum.Static;

                Godot.Collections.Array _bodies = _blastArea.GetOverlappingBodies();
                foreach (PhysicsBody _body in _bodies)
                {
                    if (_body.HasMethod("BulletHit"))
                    {
                        _callback = GD.FuncRef(_body, "BulletHit");
                        _callback.CallFunc(_grenadeDamage, _blastArea.GlobalTransform);
                    }
                }

                SimpleAudioPlayer _audioClone = (SimpleAudioPlayer)_simpleAudioPlayer.Instance();
                Node _sceneRoot = GetTree().Root.GetChild(0);
                _sceneRoot.AddChild(_audioClone);
                _audioClone.PlaySoundLocal("Explosion", GlobalTransform.origin);

                if (_explosionWaitTimer < _explosionWaitTime)
                {
                    _explosionWaitTimer += delta;

                    if (_explosionWaitTimer >= _explosionWaitTime)
                    {
                        QueueFree();
                    }
                }
            }
        }
    }
示例#2
0
    public void CreateSound(string _soundName, Vector3 _position = new Vector3())
    {
        SimpleAudioPlayer _audioClone = (SimpleAudioPlayer)_simpleAudioPlayer.Instance();
        Node _sceneRoot = GetTree().Root.GetChild(0);

        _sceneRoot.AddChild(_audioClone);
        if (_position == new Vector3())
        {
            _audioClone.PlaySoundGlobal(_soundName);
        }
        else
        {
            _audioClone.PlaySoundLocal(_soundName, _position);
        }
    }