Unity/unity c# MyCode

Raycast ์ด์šฉํ•˜์—ฌ ํด๋ฆญํ•œ ์ง€์ ์œผ๋กœ ์ด๋™ํ•˜๊ธฐ

Rainbow๐ŸŒˆCoder 2021. 12. 26. 14:08
728x90

VR๊ฐœ๋ฐœ์„ ํ•˜๋˜ ๋„์ค‘

์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์›€์ง์ด์ง€ ์•Š๊ณ ๋„ ํด๋ฆญํ•œ ์ง€์ ์œผ๋กœ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ด๋™ํ•ด์ฃผ๊ธฐ ์œ„ํ•œ ๋ฐœ์ƒ์„ ์—ฐ๊ตฌํ•˜๋‹ค๊ฐ€

์ง  ์ฝ”๋“œ์˜€์ง€๋งŒ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜์ง€๋Š” ์•Š์•˜๋‹ค.

 

<์ˆ˜์ •ํ•˜๋ฉด ์ข‹์„ ์‚ฌํ•ญ>

(1) ํ…Œ์ด๋ธ”, ๊ฒŒ์‹œํŒ ๋“ฑ์˜ ์ด๋™ ์œ„์น˜๊ฐ€ ์ถ”๊ฐ€๋  ๊ฒฝ์šฐ๋ฅผ ์ƒ๊ฐํ•˜์—ฌ

๋ฐฐ์—ด๋กœ ๋งŒ๋“ค์–ด์ฃผ๋ฉด ํ™•์žฅ์„ฑ ์ธก๋ฉด์—์„œ ๋”์šฑ ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.
(2) ์—…๋ฐ์ดํŠธ๋ฌธ ์•ˆ์˜ if๋ฌธ ์•ˆ์— ์žˆ๋Š” ๋กœ์ง์„ ๋‹ค๋ฅธ ํ•จ์ˆ˜๋กœ ๋ถ„๋ฆฌ(๋…๋ฆฝ)์‹œํ‚ค๋Š” ๊ฒƒ์ด ์žฅ๊ธฐ์ ์ธ ์œ ์ง€๋ณด์ˆ˜์— ๋”์šฑ ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class tempPlayer : MonoBehaviour
{
    public GameObject head;//ํ”Œ๋ ˆ์ด์–ด 
    public GameObject tablePos;//ํ…Œ์ด๋ธ”
    public GameObject boardPos;//๊ฒŒ์‹œํŒ

    void Update()
    {

        if(Input.GetMouseButtonDown(0))
        {
            //ํด๋ฆญํ•œ ์ง€์ ์˜ ์›”๋“œ ์ขŒํ‘œ
            Vector3 mousePos = Camera.main.ScreenToWorldPoint
                (new Vector3(Input.mousePosition.x, Input.mousePosition.y, Camera.main.nearClipPlane));
            Vector3 dir = mousePos - Camera.main.transform.position;
            dir = dir.normalized;
            Debug.DrawRay(Camera.main.transform.position, dir, Color.red);
            RaycastHit hit;
            if (Physics.Raycast(Camera.main.transform.position, dir, out hit))
            {
                if(hit.collider.tag=="Table")
                {
                    StartCoroutine(moveCo(tablePos));
                }
                if (hit.collider.tag == "Board")
                {
                    StartCoroutine(moveCo(boardPos));
                }
            }
        }
    }
    IEnumerator moveCo(GameObject pos)
    {
        while (head.transform.position!= pos.transform.position)
        {
            head.transform.position = Vector3.MoveTowards
                (head.transform.position, pos.transform.position, Time.deltaTime * 1.5f);
            yield return null;
        }
    }
}
728x90