50 lines
1.5 KiB
C#
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;
|
|
}
|
|
}
|