XRoom_Unity/Assets/ResetPositionAndRotationByHost.cs
2025-05-31 10:20:20 +03:30

50 lines
1.5 KiB
C#

using Fusion;
using UnityEngine;
public class ResetPositionAndRotationByHost : NetworkBehaviour
{
// موقعیت و چرخش اولیه شی
private Vector3 initialPosition;
private Quaternion initialRotation;
private void Start()
{
// ذخیره کردن موقعیت و چرخش اولیه شی
initialPosition = transform.position;
initialRotation = transform.rotation;
}
Rigidbody rb;
// تابع برای ریست کردن موقعیت و چرخش شی
public void ResetPositionAndRotation()
{
//if (IsLocalPlayer) return; // جلوگیری از تغییر توسط غیر Host
// فقط Host می‌تواند موقعیت و چرخش را ریست کند
if (Object.HasInputAuthority)
{
rb = GetComponent<Rigidbody>();
if (rb)
{
rb.useGravity = false;
rb.isKinematic = true;
rb.angularVelocity = Vector3.zero;
rb.linearVelocity = Vector3.zero;
}
// ریست کردن موقعیت و چرخش شی به موقعیت و چرخش اولیه
Invoke("ResetPos", 1);
// سینک کردن موقعیت و چرخش برای کلاینت‌ها
GetComponent<NetworkTransform>().ResetState();
}
}
public void ResetPos()
{
transform.position = initialPosition;
transform.rotation = initialRotation;
rb.isKinematic = false;
rb.useGravity = false;
}
}