상호 작용하여 움직이는 오브젝트
private void DetectMousePosition()
{
Vector3 mousePosition = Input.mousePosition;
Vector3 worldMousePosition = camera.ScreenToWorldPoint(new Vector3(mousePosition.x, mousePosition.y,camera.nearClipPlane));
float objectCenterX = transform.position.x;
float mouseX = worldMousePosition.x;
if (mouseX < objectCenterX)
{
promptText = "왼쪽으로 밀기";
right = false;
}
else if (mouseX > objectCenterX)
{
promptText = "오른쪽으로 밀기";
right = true;
}
}
private IEnumerator MoveCoroutine(bool right)
{
float elasped = 0f;
while(elasped < movingTime)
{
if(right)
transform.position = Vector3.Lerp(startPosition, startPosition + movePosition, elasped / movingTime);
else
{
transform.position = Vector3.Lerp(startPosition, startPosition - movePosition, elasped / movingTime * movingTime);
}
elasped += Time.deltaTime;
yield return null;
}
if(right) transform.position = startPosition + movePosition;
else transform.position = startPosition - movePosition;
}
private void Update()
{
DetectMousePosition();
if (!isMoved && Input.GetMouseButtonDown(0)) Interact();
}
public void Interact()
{
StartCoroutine(MoveCoroutine(right));
isMoved = true;
}
식물 기믹
public void WaterPlant()
{
if (!isWatered)
{
isWatered = true;
StartCoroutine(WateringPlant());
OpenDoor();
}
}
private IEnumerator WateringPlant()
{
float elapsed = 0f;
while(elapsed < growthDuration)
{
Debug.Log(palm.localPosition);
palm.localPosition = Vector3.Lerp(origin, targetScale, elapsed / growthDuration);
elapsed += Time.deltaTime;
yield return null;
}
palm.localPosition = targetScale;
}