add camera rig, click-to-move locomotion, and click interaction
Camera: Cinemachine-based rig with an anchor, a state director, point-of- interest framing, pan input, and dialogue framing volumes. Player: click-to-move over the NavMesh, a pointer input layer, and a motion arbiter that reconciles direct stick input with navigation-driven movement. The pure math is isolated in NightclubArcadia.Locomotion.Math with an EditMode suite, so the arbitration rules are testable without a scene. Interaction: IClickInteractable plus a bridge that routes pointer clicks to it. Supporting project settings: adds the Cinemachine package, the Interactable and Ground tags the raycasts depend on, and NavMesh agent dimensions matched to the player capsule (radius 0.3, height 1.8, climb 0.25). Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace NightclubArcadia.Interaction
|
||||
{
|
||||
/// <summary>
|
||||
/// Adapts NPCStandIn to the click-to-interact pipeline without modifying
|
||||
/// the existing proximity + keypress path.
|
||||
/// </summary>
|
||||
public sealed class ClickInteractableBridge : MonoBehaviour, IClickInteractable
|
||||
{
|
||||
[SerializeField] NPCStandIn npc;
|
||||
|
||||
public Transform ApproachPoint => transform;
|
||||
public float ApproachRadius => npc != null ? Mathf.Max(0.15f, npc.interactionRange - 0.5f) : 0.15f;
|
||||
|
||||
void Awake()
|
||||
{
|
||||
if (npc == null)
|
||||
{
|
||||
npc = GetComponent<NPCStandIn>();
|
||||
}
|
||||
}
|
||||
|
||||
public void OnApproached()
|
||||
{
|
||||
npc?.Interact();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user