🎯 game engine/β—½ μœ λ‹ˆν‹°(unity)

(unity) GetComponent, GetAxis, OnTriggerEnter, OnCollisionEnter, FindObjectOfType

DoctorSunAhna 2022. 7. 12. 17:06
728x90

GetComponent( ) λ©”μ„œλ“œ

μ›ν•˜λŠ” νƒ€μž…μ˜ μ»΄ν¬λ„ŒνŠΈλ₯Ό μžμ‹ μ˜ κ²Œμž„ μ˜€λΈŒμ νŠΈμ—μ„œ μ°Ύμ•„μ˜€λŠ” λ©”μ„œλ“œμž…λ‹ˆλ‹€.

Rigidbody = GetComponent<Rigidbody>();

β€» μ œλ„€λ¦­: GetComponent ( ) λ©”μ„œλ“œμ—μ„œ μ‚¬μš©ν•œ κΊ½μ‡  <>λŠ” μ œλ„€λ¦­(Generic)κΈ°λ²•μž…λ‹ˆλ‹€. μ œλ„€λ¦­μ€ λ©”μ„œλ“œλ‚˜ ν΄λž˜μŠ€κ°€ μ—¬λŸ¬ νƒ€μž…μ— ν˜Έν™˜λ˜κ²Œ ν•©λ‹ˆλ‹€. κΊ½μ‡  μ•ˆμ— μ›ν•˜λŠ” νƒ€μž…μ„ λͺ…μ‹œν•˜λ©΄ ν΄λž˜μŠ€λ‚˜ λ©”μ„œλ“œκ°€ ν•΄λ‹Ή νƒ€μž…μ— 맞좰 λ™μž‘ν•©λ‹ˆλ‹€. μ œλ„€λ¦­μ„ μ‚¬μš©ν•˜μ§€ μ•ŠμœΌλ©΄ 같은 처리λ₯Ό μœ„ν•œ μ—¬λŸ¬ νƒ€μž…μ˜ λ©”μ„œλ“œλ‚˜ 클래슀λ₯Ό 일일이 λ§Œλ“€μ–΄μ•Ό ν•©λ‹ˆλ‹€. 

 

(이동) GetAxis( ) λ©”μ„œλ“œ

μ–΄λ–€ 좕에 λŒ€ν•œ μž…λ ₯값을 숫자둜 λ°˜ν™˜ν•˜λŠ” λ©”μ„œλ“œμž…λ‹ˆλ‹€.Input.GetAxis( ) λ©”μ„œλ“œλŠ” μΆ•μ˜ 이름을 λ°›μŠ΅λ‹ˆλ‹€.

이 μŠ€νŠΈλ§μ€ μž…λ ₯ λ§€λ‹ˆμ € μ„€μ ˆ μ°½μ—μ„œ μˆ˜μ •λ„ κ°€λŠ₯ν•©λ‹ˆλ‹€. 

경둜: Edit > Project Settings... Input Manager > Axes 리슀트 펼치기 

 

μž…λ ₯을 숫자둜 λ°›λŠ” μ΄μœ κ°€ 뭘까 ? 

ν‚€λ³΄λ“œμ˜ ν‚€λ₯Ό λˆŒλ Έμ„ λ•Œ true, λˆ„λ₯΄μ§€ μ•Šμ•˜μ„ λ•Œ false둜 λ‹¨μˆœν•˜κ²Œ ꡬ뢄할 수 μžˆμ§€λ§Œ, κ²Œμž„ νŒ¨λ“œμ˜ μ•„λ‚ λ‘œκ·Έ μŠ€ν‹±μ€ '살짝'λ―ΈλŠ” 것이 κ°€λŠ₯ν•©λ‹ˆλ‹€. κ²Œμž„ νŒ¨λ“œμ˜ μ‘°μ΄μŠ€ν‹±μ„ μ•ˆ λ°€μ—ˆμ„λ•ŒλŠ” κ°€λ§Œνžˆ μ„œμžˆκ³  살짝 λ°€μ—ˆμ„ λ•ŒλŠ” λͺ¬μŠ€ν„°μ—κ²Œ 듀킀지 μ•Šκ²Œ 천천히 κ±·λŠ” λ™μž‘μ„ μ‹€ν–‰ν•˜κ³  λͺ¨λ‘ λ°€μ—ˆμ„λ•ŒλŠ” 일반적인 μ†λ„μ˜ 걸음걸이λ₯Ό ν•˜κ³  μ‹Άλ‹€λ©΄ μž…λ ₯을 true, falseλ‘œλŠ” ν‘œν˜„μ΄ λΆˆκ°€λŠ₯ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ 'μ–Όλ§ˆλ‚˜'λ°€μ—ˆλŠ”μ§€ κ°μ§€ν•˜κΈ° μœ„ν•΄ Input.GetAxisλŠ” 좕에 λŒ€ν•œ μž…λ ₯값을 숫자둜 λ°˜ν™˜ν•©λ‹ˆλ‹€.

 

(좩돌) OnTriggerEnter λ˜λŠ” OnCollisionEnter

κ²Œμž„ μ˜€λΈŒμ νŠΈμ™€ μ»΄ν¬λ„ŒνŠΈλŠ” 좩돌 μ’…λ₯˜μ— 따라 OnTriggerEnter λ˜λŠ” OnCollisionEnter 메세지λ₯Ό λ°›μŠ΅λ‹ˆλ‹€. λ˜ν•œ 좩돌 λ©”μ„Έμ§€μ—λŠ” μΆ©λŒν•œ μƒλŒ€λ°© κ²Œμž„ μ˜€λΈŒμ νŠΈμ— λŒ€ν•œ 정보도 ν•¨κ»˜ μ²¨λΆ€λ©λ‹ˆλ‹€. Aμ—λŠ” μΆ©λŒν•œ Bκ²Œμž„ 였브젝트 정보가. Bμ—λŠ” μΆ©λŒν•œ μƒλŒ€λ°© Aκ²Œμž„ 였브젝트의 정보가 μ „λ‹¬λ©λ‹ˆλ‹€. λ”°λΌμ„œ μΆ©λŒν•œ μƒλŒ€λ°© κ²Œμž„ μ˜€λΈŒμ νŠΈκ°€ μ–΄λ– ν•œ μ˜€λΈŒμ νŠΈμΈμ§€ 좩돌 메세지λ₯Ό 톡해 μ•Œ 수 있으며, μ–΄λ–€ λŒ€μ‘μ„ ν•΄μ•Ό ν•˜λŠ”μ§€λ„ κ²°μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 

좩돌 메세지λ₯Ό λ°œμƒμ‹œν‚€λŠ” 것은 λ¦¬μ§€λ“œλ°”λ”” μ»΄ν¬λ„ŒνŠΈμž…λ‹ˆλ‹€. λ”°λΌμ„œ 좩돌 이벀트 λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜λ €λ©΄ μ„œλ‘œ 좩돌 쀑인 κ²Œμž„ 였브젝트 μ€‘μ—μ„œ μ΅œμ†Œ ν•˜λ‚˜μ˜ μ˜€λΈŒμ νŠΈλŠ” λ¦¬μ§€λ“œλ°”λ”” μ»΄ν¬λ„ŒνŠΈλ₯Ό 가지고 μžˆμ–΄μ•Όν•©λ‹ˆλ‹€. -

상황 OnCollision 계열: 일반 좩돌 OnTrigger 계열: 트리거 좩돌
νƒ€μž… νŠΉμ§• 좩돌 κ΄€λ ¨ 정보λ₯Ό λ‹΄λŠ” λ‹¨μˆœ 정보 μ»¨ν…μ΄λ„ˆ
μƒλŒ€λ°© κ²Œμž„ 였브젝트, 좩돌 지점, 좩돌 ν‘œλ©΄μ˜ λ°©ν–₯등을 λ°˜ν™˜ν•¨.
트리거 μΆ©λŒμ€ 일반적인 좩돌과 달리 μ„œλ‘œ 밀어내지 μ•Šκ³  κ·ΈλŒ€λ‘œ ν†΅κ³Όνž˜.
μΆ©λŒν•œ μƒλŒ€λ°© κ²Œμž„ 였브젝트λ₯Ό λ°˜ν™˜ν•¨.
μΆ©λŒν•œ μˆœκ°„ OnCollisionEnter(Collision collision) OnTriggerEnter(Collider other)
μΆ©λŒν•˜λŠ” λ™μ•ˆ OnCollisionStay(Collision collision) OnTriggerStay(Collider other)
μΆ©λŒν–ˆλ‹€κ°€ λΆ„λ¦¬λ˜λŠ” μˆœκ°„ OnCollisionExit(Collision collision) OnTriggerExit(Collider other)

 

FindObjectOfType()

FindObjectOfType( ) λ©”μ„œλ“œλŠ” 씬에 μ‘΄μž¬ν•˜λŠ” λͺ¨λ“  였브젝트λ₯Ό κ²€μƒ‰ν•˜μ—¬ μ›ν•˜λŠ” νƒ€μž…μ˜ 였브젝트λ₯Ό μ°Ύμ•„λƒ…λ‹ˆλ‹€.FindObjectType( ) λ©”μ„œλ“œλŠ” 처리 λΉ„μš©μ΄ 크기 λ•Œλ¬Έμ— Start( ) λ©”μ„œλ“œμ²˜λŸΌ μ΄ˆκΈ°μ— ν•œ λ‘λ²ˆ μ‹€ν–‰λ˜λŠ” λ©”μ„œλ“œμ—μ„œλ§Œ μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€. 

FindObjectOfType  FindObjectsOfType 
ν•΄λ‹Ή νƒ€μž…μ˜ 였브젝트λ₯Ό ν•˜λ‚˜λ§Œ 찾음. ν•΄λ‹Ή νƒ€μž…μ˜ 였브젝트λ₯Ό λͺ¨λ‘ μ°Ύμ•„ λ°°μ—΄λ‘œ λ°˜ν™˜.

 

 

β€» 좜처: 레트둜의 μœ λ‹ˆν‹° κ²Œμž„ ν”„λ‘œκ·Έλž˜λ° μ—μ„ΌμŠ€: C#으둜 λ°°μš°λŠ” μž…λ¬ΈλΆ€ν„° 4가지 κ²Œμž„ μ œμž‘κΉŒμ§€.

곡뢀 λͺ©μ μœΌλ‘œλ§Œ μ‚¬μš©ν•˜μ˜€μŠ΅λ‹ˆλ‹€. 

728x90