63 lines
1.9 KiB
C#
63 lines
1.9 KiB
C#
using UnityEngine;
|
|
|
|
public class ItemCountDown : MonoBehaviour
|
|
{
|
|
|
|
public GameObject gameObjectRestore; //ゲームオブフェクトの復帰する座標を指定する
|
|
|
|
private bool isGrabbed = false;
|
|
private bool isTouching = false;
|
|
|
|
public float grabItemTimeLimit = 5.0f; //ゲームオブジェクトの位置がリセットされるまでのタイマー
|
|
private float timer; //スクリプト内のタイマーに用いる変数
|
|
|
|
void Start()
|
|
{
|
|
timer = 0.0f;
|
|
}
|
|
|
|
public void GetGrab()
|
|
{
|
|
isGrabbed = true;
|
|
isTouching = true;
|
|
}
|
|
|
|
public void ExitGrab()
|
|
{
|
|
isTouching = false;
|
|
}
|
|
|
|
void Update()
|
|
{
|
|
//制限時間が0秒の場合は、位置のリセットを実行しない
|
|
if (grabItemTimeLimit != 0)
|
|
{
|
|
if (isGrabbed == true)
|
|
{
|
|
if (isTouching == false)
|
|
{
|
|
timer += Time.deltaTime;
|
|
|
|
if (timer > grabItemTimeLimit)
|
|
{
|
|
//ゲームオブジェクトの速度をリセット
|
|
var rigidbody = GetComponent<Rigidbody>();
|
|
rigidbody.linearVelocity = Vector3.zero;
|
|
//ゲームオブジェクトを指定位置に配置する
|
|
rigidbody.transform.position = gameObjectRestore.transform.position;
|
|
rigidbody.transform.rotation = gameObjectRestore.transform.rotation;
|
|
//ゲームオブジェクトは不動の状態に戻る
|
|
isGrabbed = false;
|
|
timer = 0.0f;
|
|
}
|
|
}
|
|
//プレイヤーが触っている場合はカウントダウンをリセット
|
|
else
|
|
{
|
|
timer = 0.0f;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|