[Add] Synaptic AI Pro
https://assetstore.unity.com/packages/tools/generative-ai/synaptic-ai-pro-natural-language-control-for-unity-336030
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace SynapticPro
|
||||
{
|
||||
/// <summary>
|
||||
/// Makes a sky sphere follow the main camera position.
|
||||
/// Used for landscape photo skybox effect.
|
||||
/// </summary>
|
||||
[AddComponentMenu("Synaptic Pro/Sky Sphere Camera Follow")]
|
||||
public class SkySphereCameraFollow : MonoBehaviour
|
||||
{
|
||||
[Tooltip("Target camera to follow. If null, uses Camera.main")]
|
||||
public Camera targetCamera;
|
||||
|
||||
[Tooltip("Offset from camera position")]
|
||||
public Vector3 offset = Vector3.zero;
|
||||
|
||||
[Tooltip("Enable rotation sync with camera")]
|
||||
public bool syncRotation = false;
|
||||
|
||||
[Tooltip("Only sync Y-axis rotation")]
|
||||
public bool yAxisOnly = true;
|
||||
|
||||
private Transform _cameraTransform;
|
||||
|
||||
public void Initialize()
|
||||
{
|
||||
if (targetCamera == null)
|
||||
{
|
||||
targetCamera = Camera.main;
|
||||
}
|
||||
|
||||
if (targetCamera != null)
|
||||
{
|
||||
_cameraTransform = targetCamera.transform;
|
||||
}
|
||||
}
|
||||
|
||||
private void Start()
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
private void LateUpdate()
|
||||
{
|
||||
if (_cameraTransform == null)
|
||||
{
|
||||
if (targetCamera != null)
|
||||
{
|
||||
_cameraTransform = targetCamera.transform;
|
||||
}
|
||||
else
|
||||
{
|
||||
targetCamera = Camera.main;
|
||||
if (targetCamera != null)
|
||||
{
|
||||
_cameraTransform = targetCamera.transform;
|
||||
}
|
||||
}
|
||||
|
||||
if (_cameraTransform == null) return;
|
||||
}
|
||||
|
||||
// Follow camera position
|
||||
transform.position = _cameraTransform.position + offset;
|
||||
|
||||
// Optionally sync rotation
|
||||
if (syncRotation)
|
||||
{
|
||||
if (yAxisOnly)
|
||||
{
|
||||
var euler = transform.eulerAngles;
|
||||
euler.y = _cameraTransform.eulerAngles.y;
|
||||
transform.eulerAngles = euler;
|
||||
}
|
||||
else
|
||||
{
|
||||
transform.rotation = _cameraTransform.rotation;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Set the rotation offset of the sky sphere
|
||||
/// </summary>
|
||||
public void SetRotation(float yRotation)
|
||||
{
|
||||
transform.rotation = Quaternion.Euler(0, yRotation, 0);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Set the scale (radius) of the sky sphere
|
||||
/// </summary>
|
||||
public void SetRadius(float radius)
|
||||
{
|
||||
transform.localScale = Vector3.one * radius;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user