云团视觉:用算法真实半径+透明度,随扩散渐大渐淡

This commit is contained in:
tian 2026-06-12 09:31:15 +08:00
parent d3295418b7
commit 8b71351a7b
2 changed files with 17 additions and 3 deletions

1
.gitignore vendored
View File

@ -59,3 +59,4 @@ src/Unity/obj/
src/Unity/Logs/
src/Unity/UserSettings/
unity_plugins/
nul

View File

@ -92,7 +92,10 @@ namespace CounterDrone.Unity
if (snap.EntityType == EntityType.Cloud)
{
float r = ParseCloudRadius(snap.StateData);
float opacity = ParseCloudOpacity(snap.StateData);
go.transform.localScale = UVector3.one * r;
var mat = go.GetComponent<Renderer>().material;
mat.color = new Color(1, 0, 0, opacity);
}
}
@ -104,8 +107,8 @@ namespace CounterDrone.Unity
var prefab = _cloudPrefab != null ? _cloudPrefab : GameObject.CreatePrimitive(PrimitiveType.Sphere);
var go = Instantiate(prefab, pos, Quaternion.identity);
go.name = cloud.Id;
go.transform.localScale = UVector3.one * 30f;
// 半透明红色
float r = cloud.Dispersion.Radius;
go.transform.localScale = UVector3.one * r;
var mat = go.GetComponent<Renderer>().material;
mat.color = new Color(1, 0, 0, 0.3f);
_clouds[cloud.Id] = go;
@ -155,7 +158,17 @@ namespace CounterDrone.Unity
_entityVisuals[drone.Id] = go;
}
private float ParseCloudRadius(string stateData)
private float ParseCloudOpacity(string stateData)
{
try
{
using var doc = JsonDocument.Parse(stateData);
if (doc.RootElement.TryGetProperty("opacity", out var o))
return o.GetSingle();
}
catch { }
return 0.5f;
}
{
try
{