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