HPbarzissou
This commit is contained in:
@@ -21,12 +21,16 @@ public class PuzzleBlock : MonoBehaviour
|
||||
private PuzzleBlock nearbyPartner;
|
||||
private bool isConnected;
|
||||
|
||||
// ★ワールド情報ではなく「親階層」と「ローカル情報」を記憶
|
||||
// 親階層とローカル情報の記憶
|
||||
private Transform initialParent;
|
||||
private Vector3 initialLocalPosition;
|
||||
private Quaternion initialLocalRotation;
|
||||
private Vector3 initialLocalScale;
|
||||
|
||||
// ★追加:初期の物理設定を記憶
|
||||
private bool initialIsKinematic;
|
||||
private bool initialUseGravity;
|
||||
|
||||
private Rigidbody rb;
|
||||
private XRGrabInteractable grabInteractable;
|
||||
|
||||
@@ -35,11 +39,17 @@ public class PuzzleBlock : MonoBehaviour
|
||||
rb = GetComponent<Rigidbody>();
|
||||
grabInteractable = GetComponent<XRGrabInteractable>();
|
||||
|
||||
// ★開始時の「親」と「ローカル座標・回転・スケール」を保持
|
||||
initialParent = transform.parent;
|
||||
initialLocalPosition = transform.localPosition;
|
||||
initialLocalRotation = transform.localRotation;
|
||||
initialLocalScale = transform.localScale;
|
||||
|
||||
// ★初期状態の重力・キネマティック設定を保持
|
||||
if (rb != null)
|
||||
{
|
||||
initialIsKinematic = rb.isKinematic;
|
||||
initialUseGravity = rb.useGravity;
|
||||
}
|
||||
}
|
||||
|
||||
private void OnEnable()
|
||||
@@ -109,10 +119,11 @@ public class PuzzleBlock : MonoBehaviour
|
||||
|
||||
OnPuzzleCompleted?.Invoke(Color);
|
||||
|
||||
// PuzzleBlock.cs
|
||||
BuffType buff = ConvertColorToBuffType(Color);
|
||||
if (PlayerStatusManager.Instance != null)
|
||||
{
|
||||
PlayerStatusManager.Instance.ApplyBuffsAndResume(buff, buff);
|
||||
PlayerStatusManager.Instance.ApplyBuffAndResume(buff);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -129,32 +140,29 @@ public class PuzzleBlock : MonoBehaviour
|
||||
|
||||
public void ResetBlock()
|
||||
{
|
||||
// 1. 手で掴んでいる場合は手離し処理
|
||||
ForceDrop();
|
||||
|
||||
isConnected = false;
|
||||
nearbyPartner = null;
|
||||
|
||||
// 2. ★親オブジェクト(Canvas)の子へ戻す
|
||||
if (initialParent != null && transform.parent != initialParent)
|
||||
{
|
||||
transform.SetParent(initialParent, false);
|
||||
}
|
||||
|
||||
// 3. ★Canvas内のローカル位置・回転・スケールを完全復元
|
||||
transform.localPosition = initialLocalPosition;
|
||||
transform.localRotation = initialLocalRotation;
|
||||
transform.localScale = initialLocalScale;
|
||||
|
||||
// 4. 物理状態の再初期化
|
||||
// ★修正:初期設定(記憶した値)へ正確に復元
|
||||
if (rb != null)
|
||||
{
|
||||
rb.isKinematic = false;
|
||||
rb.linearVelocity = Vector3.zero;
|
||||
rb.angularVelocity = Vector3.zero;
|
||||
rb.isKinematic = initialIsKinematic;
|
||||
rb.useGravity = initialUseGravity;
|
||||
}
|
||||
|
||||
// 5. 掴み機能の再有効化
|
||||
if (grabInteractable != null)
|
||||
{
|
||||
grabInteractable.enabled = true;
|
||||
|
||||
Reference in New Issue
Block a user