using Godot; using System; using System.Collections.Generic; using Config; public partial class TestMask2 : SubViewportContainer { [Export] public Label Message; [Export] public Node2D Player; [Export] public Texture2D Brush1; [Export] public Texture2D Brush2; private BrushImageData _brushData1; private BrushImageData _brushData2; private Vector2I? _prevPosition = null; private LiquidCanvas _liquidCanvas; public override void _Ready() { Engine.MaxFps = (int)DisplayServer.ScreenGetRefreshRate(); //Engine.MaxFps = 5; _brushData1 = new BrushImageData(ExcelConfig.LiquidMaterial_Map["0001"]); _brushData2 = new BrushImageData(ExcelConfig.LiquidMaterial_Map["0002"]); _liquidCanvas = new LiquidCanvas(null, (int)(Size.X / LiquidCanvas.CanvasScale), (int)(Size.X / LiquidCanvas.CanvasScale)); GetNode("SubViewport").AddChild(_liquidCanvas); } public override void _Process(double delta) { InputManager.Update((float)delta); //玩家移动 Player.Position += InputManager.MoveAxis * 120 * (float)delta; var pos = (Player.Position / LiquidCanvas.CanvasScale).AsVector2I(); if (_prevPosition != null) { _liquidCanvas.DrawBrush(_brushData2, _prevPosition, pos, new Vector2(pos.X - _prevPosition.Value.X, pos.Y - _prevPosition.Value.Y).Angle()); } else { _liquidCanvas.DrawBrush(_brushData2, _prevPosition, pos, 0); } //碰撞检测 var mousePosition = (GetGlobalMousePosition() / (4 * LiquidCanvas.CanvasScale)).AsVector2I(); Message.Text = "鼠标是否碰到毒液: " + _liquidCanvas.Collision(mousePosition.X, mousePosition.Y); } }