public Image reticle;
private float timeElapsed;
public GameObject CamOffset;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
raycast();
}
void raycast()
{
RaycastHit hit;
Vector3 forward = transform.TransformDirection(Vector3.forward * 1000);
if (Physics.Raycast(transform.position, forward, out hit))
{
Debug.Log("is hit");
draweropen(hit);
}
Debug.DrawRay(transform.position, forward, Color.green);
}
void draweropen(RaycastHit hit)
{
if (hit.transform.tag == "drawer")
{
reticle.fillAmount = timeElapsed / 3;
timeElapsed = timeElapsed + Time.deltaTime;
if (timeElapsed >= 3)
{
Debug.Log("Drawer");
}
}
}
이런 스크립트를 짰는데 이제 태그가 drawer란 물체에서
레이캐스트 힛 당했단 정보를 받으면 애니메이션커브 활용해서 로컬포지션으로 x값으로 이동하고 그렇지 않으면 원래 위치로 돌아가는 그런 스크립트를 짜려는데
어떻게 짜면 좋냐
일단 지금처럼 Update에서 레이캐스트를 계속 돌리는건 피해야하겠고, 나라면 반응하는 오브젝트 용 스크립트 따로 만들고 그 안에서 열리는 애니메이션을 재생하거나, 코루틴으로 열리게 하거나 할듯
너가 말한대로 반응하는 오브젝트에 스크립트를 넣으려는데 이거를 오브젝트에서 레이를 받았다고 인식할 무언가가 뭔지를 모르겠음 + 코루틴으로 할거면 한 스크립트 안에서 해결이 되나 - dc App