public AnimationCurve ac;
ย ย [Range(0.0f, 1.0f)]
ย ย public float t;
ย ย
ย ย private float timeElapsed;
ย ย public Image reticle;
ย ย // 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");
ย ย ย ย ย ย drawermovement(hit);
ย ย ย ย }
ย ย ย ย Debug.DrawRay(transform.position, forward, Color.green);
ย ย }
ย ย void drawermovement(RaycastHit hit)
ย ย {
ย ย ย ย if (hit.transform.tag == "drawer")
ย ย ย ย {
ย ย ย ย ย ย reticle.fillAmount = timeElapsed / 3;
ย ย ย ย ย ย timeElapsed = timeElapsed + Time.deltaTime;
ย ย ย ย ย ย if (timeElapsed >= 3)
ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย Debug.Log("Drawer");
ย ย ย ย ย ย ย ย float z = ac.Evaluate(t);
ย ย ย ย ย ย ย ย transform.localPosition = new Vector3(0, 0, z);
ย ย ย ย ย ย }
ย ย ย ย }
ย ย }
๋ ์ด๊ฐ drawer ํ๊ทธ๋ฅผ ๊ฐ์ง ๋ฌผ์ฒดํํ ๋ฟ์์๋ drawermovement ํจ์๋ฅผ ํธ์ถํ๋๋ฐ
drawermovement ํจ์๋ 3์ด๊ฐ ๋ ์ด์ ๋ฟ์์ผ๋ฉด drawer ํ๊ทธ์ ๋ฌผ์ฒด๊ฐ ์๋์ขํ z์ถ์ผ๋ก ์์ง์ด๋ ํจ์๋ฅผ ์ง๊ณ ์ถ์๋ฐ
์ด๊ฑฐ๋ฅผ ์ ์ฉ์ํค๋ฉด ๋๋ฒ๊ทธ๋ก๊ทธ is hit๋ง ๋์ค๊ณ ๊ฒ์์ค๋ธ์ ํธ ์์ drawer๋ผ๋ ํ๊ทธ์ ์ค๋ธ์ ํธ๊ฐ ํ ์ขํ์ ๊ฒน์ณ์ ์ ์์ง์ด์ง๋ฅผ ์๋ค
์๋ฐ ์ด๊ฑฐ ์ด์ฉ๋
drawer๋ผ๋ ํ๊ทธ์ ๋ฌผ์ฒด์ ์ ์ฉ์ํค๋ ํจ์๋ฅผ ๋ฐ๋ก ์ง์ผํ๋
ํ์ขํ์ ๊ฒน์ณ์ ธ์ ์์ง์ธ๋ค๋ ๋ง์ด drawerํ๊ทธ๊ฐ์ง ๋ฌผ์ฒด๋ค์ด ํ์ขํ์ ์ฌ๋ฌ๊ฐ ๋ชฐ๋ ค์๋ค๋๋ป์ธ๊ฐ? ๋๊ฐ ํ๋ ๋ฐฉ๋ฒ๋ ํ๋ฆฌ์ง๋ ์๋๋ฐ ๋ณดํต์ ํ์ง๋์์ ๋ ์ด์ด๋ฃ๊ณ Raycastํ ๋ ๋ ์ด์ด๋ง์คํฌ ์ธ์๋ฅผ ๋ฃ์. ๊ทธ๋ฆฌ๊ณ timeElapsed ์ด๊ธฐํ ์ํด์ค์ ์ฒซ๋ฒ์งธ๋ 3์ด๋ฃฐ ์ ์ฉ๋์ง๋ง ์ฌ์ ์ฉํ๋ฉด 3์ด๋ฃฐ ์ ์ฉ ์๋ ๊บผ๊ฐ์๋ฐ
๋ ์ด์ด๊ธฐ๋ฅ์ ๋ด๊ฐ ์ธ์ค ๋ชฐ๋ผ์ ๊ทธ๋ผ ใ ใ ;;
ํ๊ทธ๋ ๋๊ฐ์ ํ๊ทธ ์์ ๋ ์ด์ด์๋๊ฑฐ ํ๊ทธ์ฒ๋ผ ๋ ์ด์ด ์ถ๊ฐํด์ ์ ํํ๋ค์ Raycast๋ง์ง๋ง ์ธ์์ Layermask.getMask("drawer") ์ด๊ฑฐ ํ๋์ถ๊ฐํ๋ฉด ๋ก
t๊ฐ ๋ณํ๋ ๋ถ๋ถ์ด ์๋๋ฐ
๋ก์ง์ด ๋ค ์ด์ํ๋ฐ..? z ๋ฐฉํฅ์ผ๋ก ์ด๋ํ๊ณ ์ ํ๋๊ฑฐ๋ฉด transform.localPosition = new Vector3(0, 0, z); ์ด ์๋๋ผ Translate ๋ transform.localPosition += new Vector3(0, 0, z); ์ด๋ ํด์ผ์ง ๊ทธ๋ฅ ํฌ์ง์ ์ ๋ฐ๊ณ ์์ผ๋ ๊ณ ์ ๋ ํ ์ง์ ์ ์์นํ ๊ฑฐ๊ณ ... ์ ์ด์ raycast ํ๋ค์์ ray๋ฅผ ๋ง์ ๋์์ ์์ง์ด๊ฒ ํ๊ณ ์ถ์๊ฑฐ๋ฉด hit.transform.position ์ ์ด๋ํ๋๊ฐ hitํํ component ๋ฐ์์์ ๊ฑ์ moveํจ์๋ฅผ ํธ์ถํด์ผํ์ง ์์๊น?