61 lines
2.0 KiB
C#
61 lines
2.0 KiB
C#
|
|
using UnityEngine;
|
|||
|
|
|
|||
|
|
public class DoorController : MonoBehaviour
|
|||
|
|
{
|
|||
|
|
[Header("<22>ʼ<EFBFBD> <20><><EFBFBD><EFBFBD>")]
|
|||
|
|
public Transform player;
|
|||
|
|
public GameObject interactionCanvas; // World Space ĵ<><C4B5><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
[Header("<22><><EFBFBD><EFBFBD>")]
|
|||
|
|
public string targetSceneName = "NextMap"; // <20>̵<EFBFBD><CCB5><EFBFBD> <20><> <20≯<EFBFBD>
|
|||
|
|
public float interactDistance = 4f;
|
|||
|
|
public Vector3 worldOffset = new Vector3(0, 1.2f, 0); // <20><> <20>߾<EFBFBD> <20><><EFBFBD>̷<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
[Header("<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>")]
|
|||
|
|
public float fadeSpeed = 5f;
|
|||
|
|
public float floatSpeed = 2f;
|
|||
|
|
public float floatAmplitude = 0.1f;
|
|||
|
|
|
|||
|
|
private CanvasGroup canvasGroup;
|
|||
|
|
private float currentAlpha = 0f;
|
|||
|
|
private Transform mainCamTransform;
|
|||
|
|
|
|||
|
|
void Start()
|
|||
|
|
{
|
|||
|
|
mainCamTransform = Camera.main.transform;
|
|||
|
|
|
|||
|
|
canvasGroup = interactionCanvas.GetComponent<CanvasGroup>();
|
|||
|
|
if (canvasGroup == null)
|
|||
|
|
canvasGroup = interactionCanvas.AddComponent<CanvasGroup>();
|
|||
|
|
|
|||
|
|
canvasGroup.alpha = 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void Update()
|
|||
|
|
{
|
|||
|
|
if (player == null || interactionCanvas == null) return;
|
|||
|
|
|
|||
|
|
float distance = Vector3.Distance(player.position, transform.position);
|
|||
|
|
float targetAlpha = (distance <= interactDistance) ? 1f : 0f;
|
|||
|
|
|
|||
|
|
currentAlpha = Mathf.MoveTowards(currentAlpha, targetAlpha, Time.deltaTime * fadeSpeed);
|
|||
|
|
canvasGroup.alpha = currentAlpha;
|
|||
|
|
|
|||
|
|
if (currentAlpha > 0.01f)
|
|||
|
|
{
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><EFBFBD> ī<><EFBFBD><DEB6><EFBFBD> <20>ٶ<EFBFBD><D9B6><EFBFBD>
|
|||
|
|
interactionCanvas.transform.forward = mainCamTransform.forward;
|
|||
|
|
|
|||
|
|
// <20>յ<EFBFBD> <20>ߴ<EFBFBD> ȿ<><C8BF>
|
|||
|
|
float yOffset = Mathf.Sin(Time.time * floatSpeed) * floatAmplitude;
|
|||
|
|
interactionCanvas.transform.position = transform.position + worldOffset + new Vector3(0, yOffset, 0);
|
|||
|
|
|
|||
|
|
// FŰ <20>Է<EFBFBD> <20><> <20><><EFBFBD>̵<EFBFBD> <20>ε<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
if (targetAlpha > 0.5f && Input.GetKeyDown(KeyCode.F))
|
|||
|
|
{
|
|||
|
|
SceneLoader.Instance.LoadSceneWithFade(targetSceneName);
|
|||
|
|
interactionCanvas.SetActive(false); // <20>ε<EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|