云团视觉:用算法真实半径+透明度,随扩散渐大渐淡
This commit is contained in:
parent
d3295418b7
commit
8b71351a7b
1
.gitignore
vendored
1
.gitignore
vendored
@ -59,3 +59,4 @@ src/Unity/obj/
|
||||
src/Unity/Logs/
|
||||
src/Unity/UserSettings/
|
||||
unity_plugins/
|
||||
nul
|
||||
|
||||
@ -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
|
||||
{
|
||||
|
||||
Loading…
Reference in New Issue
Block a user