118 lines
3.0 KiB
C#
118 lines
3.0 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using EPOOutline;
|
|
using UnityEngine;
|
|
using UnityEngine.XR;
|
|
|
|
public class PuzzleItem : MonoBehaviour
|
|
{
|
|
public int id;
|
|
|
|
public Outlinable[] outliner;
|
|
|
|
public bool IsFly => _isFly;
|
|
|
|
private Vector3 _startPos;
|
|
private Vector3 _startEulerAngles;
|
|
|
|
public bool isSelect;
|
|
private bool _isFly;
|
|
public void Start()
|
|
{
|
|
_startPos=transform.position;
|
|
_startEulerAngles = transform.eulerAngles;
|
|
isSelect = false;
|
|
_isFly = false;
|
|
HideOutline();
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
if(_isFly)
|
|
return;
|
|
// foreach (var item in outliner)
|
|
// {
|
|
// item.enabled = isSelect;
|
|
// }
|
|
if(GameManager.Ins.taskManager.tasks[3].isEnd)
|
|
return;
|
|
if (isSelect)
|
|
{
|
|
var rayLine = GameManager.Ins.playerRightHand.ray.GetComponent<LineRenderer>();
|
|
var followZ=transform.position.z;
|
|
transform.position=new Vector3(rayLine.GetPosition(1).x,rayLine.GetPosition(1).y,followZ);
|
|
}
|
|
}
|
|
|
|
public void StartFly()
|
|
{
|
|
StartCoroutine(FlyStartPos());
|
|
}
|
|
|
|
public void StartFlyTarget(Vector3 endPos,Vector3 endEulerAngles)
|
|
{
|
|
StartCoroutine(FlyEndPos(endPos, endEulerAngles));
|
|
}
|
|
|
|
IEnumerator FlyEndPos(Vector3 endPos,Vector3 endEulerAngles)
|
|
{
|
|
_isFly = true;
|
|
bool isToStartPos=false;
|
|
while (!isToStartPos)
|
|
{
|
|
transform.position=Vector3.Lerp(transform.position,endPos,Time.deltaTime);
|
|
transform.eulerAngles=Vector3.Lerp(transform.eulerAngles,endEulerAngles,Time.deltaTime);
|
|
yield return null;
|
|
if (Vector3.Distance(transform.position, endPos) < 0.1f)
|
|
{
|
|
transform.position=endPos;
|
|
transform.eulerAngles=endEulerAngles;
|
|
isToStartPos=true;
|
|
}
|
|
}
|
|
_isFly = false;
|
|
isSelect = false;
|
|
|
|
}
|
|
|
|
IEnumerator FlyStartPos()
|
|
{
|
|
_isFly = true;
|
|
bool isToStartPos=false;
|
|
while (!isToStartPos)
|
|
{
|
|
transform.position=Vector3.Lerp(transform.position,_startPos,Time.deltaTime);
|
|
transform.eulerAngles=Vector3.Lerp(transform.eulerAngles,_startEulerAngles,Time.deltaTime);
|
|
yield return null;
|
|
if (Vector3.Distance(transform.position, _startPos) < 0.1f)
|
|
{
|
|
transform.position=_startPos;
|
|
transform.eulerAngles=_startEulerAngles;
|
|
isToStartPos=true;
|
|
}
|
|
}
|
|
GetComponent<BoxCollider>().enabled = true;
|
|
_isFly = false;
|
|
isSelect = false;
|
|
}
|
|
|
|
public void ShowOutline()
|
|
{
|
|
foreach (var item in outliner)
|
|
{
|
|
item.enabled = true;
|
|
}
|
|
}
|
|
|
|
public void HideOutline()
|
|
{
|
|
if(isSelect)
|
|
return;
|
|
foreach (var item in outliner)
|
|
{
|
|
item.enabled = false;
|
|
}
|
|
}
|
|
}
|