DCDC25-TwinCity/Assets/Scripts/MapInteractions/MapPlacementCubeMovement.cs
2025-06-04 19:22:54 +02:00

77 lines
1.8 KiB
C#

using UnityEngine;
using Oculus.Interaction;
public class MapPlacementCubeMovement : MonoBehaviour
{
public float moveSpeed = 5f;
public InteractableUnityEventWrapper interactable;
private float fixedY;
private float fixedX;
private float fixedZ;
private bool isGrabbed = false;
void Start()
{
fixedY = transform.position.y;
fixedX = transform.position.x;
fixedZ = transform.position.z;
if (interactable != null)
{
interactable.WhenSelect.AddListener(OnGrab);
interactable.WhenUnselect.AddListener(OnRelease);
}
else
{
Debug.LogWarning("InteractableUnityEventWrapper not assigned on " + gameObject.name);
}
}
void Update()
{
if (!isGrabbed)
{
transform.position = new Vector3(fixedX, fixedY, fixedZ);
}
else
{
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
Vector3 direction = new Vector3(h, 0, v).normalized;
transform.position += direction * moveSpeed * Time.deltaTime;
Vector3 pos = transform.position;
transform.position = new Vector3(pos.x, fixedY, pos.z);
fixedX = pos.x;
fixedZ = pos.z;
}
transform.rotation = new Quaternion(0, 0, 0, 0);
}
private void OnGrab()
{
isGrabbed = true;
}
private void OnRelease()
{
Vector3 pos = transform.position;
fixedX = pos.x;
fixedZ = pos.z;
isGrabbed = false;
}
private void OnDestroy()
{
if (interactable != null)
{
interactable.WhenSelect.RemoveListener(OnGrab);
interactable.WhenUnselect.RemoveListener(OnRelease);
}
}
}