39 lines
1.3 KiB
C#
39 lines
1.3 KiB
C#
|
|
using UnityEngine;
|
||
|
|
using Fusion;
|
||
|
|
|
||
|
|
namespace OnlyScove.Scripts.GameSetup.Maze
|
||
|
|
{
|
||
|
|
public class GoalSpot : MonoBehaviour
|
||
|
|
{
|
||
|
|
private bool _isActivated = false;
|
||
|
|
|
||
|
|
private void OnTriggerEnter(Collider healthcare)
|
||
|
|
{
|
||
|
|
if (_isActivated) return;
|
||
|
|
|
||
|
|
// Kiểm tra xem đối tượng chạm vào có phải là người chơi không
|
||
|
|
PlayerStateMachine player = healthcare.GetComponentInParent<PlayerStateMachine>();
|
||
|
|
|
||
|
|
if (player != null)
|
||
|
|
{
|
||
|
|
bool isOffline = player.Runner == null || !player.Runner.IsRunning;
|
||
|
|
|
||
|
|
// Nếu có mạng, kiểm tra quyền điều khiển. Nếu offline, mặc định là người chơi cục bộ.
|
||
|
|
bool canActivate = isOffline || (player.Object != null && player.Object.HasInputAuthority);
|
||
|
|
|
||
|
|
if (canActivate)
|
||
|
|
{
|
||
|
|
_isActivated = true;
|
||
|
|
player.CompleteMaze();
|
||
|
|
|
||
|
|
// Hiệu ứng hình ảnh khi chạm đích
|
||
|
|
var renderer = GetComponent<Renderer>();
|
||
|
|
if (renderer != null) renderer.material.color = Color.green;
|
||
|
|
|
||
|
|
Debug.Log("<color=cyan>Goal reached!</color>");
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|