Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / activity / weapon / gun / Shotgun.cs
@小李xl 小李xl on 9 Jun 2023 1 KB 完善音效
  1. using Godot;
  2.  
  3. [Tool, GlobalClass]
  4. public partial class Shotgun : Weapon
  5. {
  6. protected override void OnReload()
  7. {
  8. SoundManager.PlaySoundEffectPosition(ResourcePath.resource_sound_sfx_Reloading0003_ogg, GameApplication.Instance.ViewToGlobalPosition(GlobalPosition));
  9. }
  10.  
  11. protected override void OnFire()
  12. {
  13. //创建一个弹壳
  14. ThrowShell(ActivityObject.Ids.Id_shell0001);
  15. if (Master == Player.Current)
  16. {
  17. //创建抖动
  18. GameCamera.Main.DirectionalShake(Vector2.Right.Rotated(GlobalRotation) * 2f);
  19. }
  20. //创建开火特效
  21. var packedScene = ResourceManager.Load<PackedScene>(ResourcePath.prefab_effect_ShotFire_tscn);
  22. var sprite = packedScene.Instantiate<Sprite2D>();
  23. sprite.GlobalPosition = FirePoint.GlobalPosition;
  24. sprite.GlobalRotation = FirePoint.GlobalRotation;
  25. sprite.AddToActivityRoot(RoomLayerEnum.YSortLayer);
  26. //播放射击音效
  27. SoundManager.PlaySoundEffectPosition(ResourcePath.resource_sound_sfx_Shooting0003_mp3, GameApplication.Instance.ViewToGlobalPosition(GlobalPosition), -15);
  28. }
  29.  
  30. protected override void OnShoot(float fireRotation)
  31. {
  32. //创建子弹
  33. var bullet = ActivityObject.Create<Bullet>(Attribute.BulletId);
  34. bullet.Init(
  35. this,
  36. Utils.RandomRangeInt(280, 380),
  37. Utils.RandomRangeFloat(Attribute.MinDistance, Attribute.MaxDistance),
  38. FirePoint.GlobalPosition,
  39. fireRotation + Utils.RandomRangeFloat(-20 / 180f * Mathf.Pi, 20 / 180f * Mathf.Pi),
  40. GetAttackLayer()
  41. );
  42. bullet.PutDown(RoomLayerEnum.YSortLayer);
  43. }
  44. }