feat: add Unity 6 client with 2.5D visual system
Unity client features: - WebSocket connection via NativeWebSocket - 2.5D agent visuals with programmatic placeholder sprites - Billboard system for sprites and UI elements - Floating UI panels (name, HP, energy bars) - Speech bubble system with pop-in animation - RTS-style camera controller (WASD + scroll zoom) - Editor tools for prefab creation and scene setup Scripts: - NetworkManager: WebSocket singleton - GameManager: Agent spawning and event handling - AgentVisual: 2.5D sprite and UI creation - Billboard: Camera-facing behavior - SpeechBubble: Animated dialogue display - CameraController: RTS camera with UI input detection - UIManager: HUD and command input 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
using UnityEngine;
|
||||
using System.Collections;
|
||||
|
||||
|
||||
namespace TMPro.Examples
|
||||
{
|
||||
|
||||
public class ShaderPropAnimator : MonoBehaviour
|
||||
{
|
||||
|
||||
private Renderer m_Renderer;
|
||||
private Material m_Material;
|
||||
|
||||
public AnimationCurve GlowCurve;
|
||||
|
||||
public float m_frame;
|
||||
|
||||
void Awake()
|
||||
{
|
||||
// Cache a reference to object's renderer
|
||||
m_Renderer = GetComponent<Renderer>();
|
||||
|
||||
// Cache a reference to object's material and create an instance by doing so.
|
||||
m_Material = m_Renderer.material;
|
||||
}
|
||||
|
||||
void Start()
|
||||
{
|
||||
StartCoroutine(AnimateProperties());
|
||||
}
|
||||
|
||||
IEnumerator AnimateProperties()
|
||||
{
|
||||
//float lightAngle;
|
||||
float glowPower;
|
||||
m_frame = Random.Range(0f, 1f);
|
||||
|
||||
while (true)
|
||||
{
|
||||
//lightAngle = (m_Material.GetFloat(ShaderPropertyIDs.ID_LightAngle) + Time.deltaTime) % 6.2831853f;
|
||||
//m_Material.SetFloat(ShaderPropertyIDs.ID_LightAngle, lightAngle);
|
||||
|
||||
glowPower = GlowCurve.Evaluate(m_frame);
|
||||
m_Material.SetFloat(ShaderUtilities.ID_GlowPower, glowPower);
|
||||
|
||||
m_frame += Time.deltaTime * Random.Range(0.2f, 0.3f);
|
||||
yield return new WaitForEndOfFrame();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user