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(); if (rb) { rb.useGravity = false; rb.isKinematic = true; rb.angularVelocity = Vector3.zero; rb.linearVelocity = Vector3.zero; } // ریست کردن موقعیت و چرخش شی به موقعیت و چرخش اولیه Invoke("ResetPos", 1); // سینک کردن موقعیت و چرخش برای کلاینت‌ها GetComponent().ResetState(); } } public void ResetPos() { transform.position = initialPosition; transform.rotation = initialRotation; rb.isKinematic = false; rb.useGravity = false; } }