using Godot; /// <summary> /// 带笔刷的子弹 /// </summary> [Tool] public partial class BrushBullet : Bullet { /// <summary> /// 笔刷 id /// </summary> [Export] public string BrushId { get; set; } /// <summary> /// 生效高度, 当物体离地高度小于这个值时生效, 当值小于 0 时一直生效 /// </summary> [Export] public float EffectiveAltitude { get; set; } = -1; private BrushImageData _brushData; public override void OnInit() { base.OnInit(); _brushData = LiquidBrushManager.GetBrush(BrushId); } protected override void Process(float delta) { base.Process(delta); //测试笔刷 if (EffectiveAltitude < 0 || Altitude <= EffectiveAltitude) { DrawLiquid(_brushData); } else { BrushPrevPosition = null; } } public override void OnPlayDisappearEffect() { PlayDisappearEffect(ResourcePath.prefab_effect_bullet_BulletDisappear0002_tscn); } public override void OnPlayCollisionEffect(KinematicCollision2D collision) { //测试笔刷 DrawLiquid(_brushData); PlayCollisionEffect(collision, ResourcePath.prefab_effect_bullet_BulletSmoke0002_tscn); } public override void OnLeavePool() { base.OnLeavePool(); BrushPrevPosition = null; } }