ํฐ์ ์์ด ์ค๋ ฅ๋ฐ์ ๋จ์ด์ง๊ณ
๋ฐ๋ฅ์ชฝ์ ํฌ๋ช
?๋ฐํ์ ๋ง๋ค์ด์ ์๋จน์ ํฐ์์์ด ์์ด๋(๋จ์์๋)๊ฑธ ๊ตฌํํ๋ คํ๋๋ฐ
(์์งค์์ ์ฒดํฌ์ฝ๊ฒํ๊ธฐ์ํด ํฐ๋ฐํ์ ์ค๊ฐ์ ๋ ์ํ)
ํ๋ ์ด์ด๋ ์ถฉ๋ํ๋ฉด ์ค์ฝ์ด๋ฅผ ๋๋ ค์ฃผ๊ธฐ์ํด istrigger? ์ฒดํฌ๋ฅผ ์ค์ ํ๋๊น
ํฐ์์์ด ๋ฐํ์ด๋ ์ถฉ๋์ ์ํจ
์์งค ์ค๊ฐ์์๋๊ฑด istrigger ์ฒดํฌํผ ํฐ์์
์ง๋ฌธ:์ค๋ ฅ๋ฐ๋ ๋ฌผ์ฒด๊ฐ, ํ๋ ์ด์ด์ ์ถฉ๋์์๋ ์ ์๋ฅผ ์ฌ๋ฆฌ๊ณ
๋ฐ๋ฅ๊ณผ๋ ์ถฉ๋ํ๋๋ก ์ค์ ํ๋ ค๋ฉด
์คํฌ๋ฆฝํธ๋จ์๋ก ์ถ๊ฐ๊ฐ ํ์ํจ?
ํฐ์์์ ๋ฃ์ ์ฝ๋
Movement2D
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Movement2D : MonoBehaviour
{
ย ย [SerializeField]
ย ย private float moveSpeed = 0.0f;
ย ย [SerializeField]
ย ย private Vector3 moveDirection = Vector3.zero;
ย ย
ย ย
ย ย private void Update()
ย ย {
ย ย ย ย transform.position += moveDirection * moveSpeed * Time.deltaTime;
ย ย }
ย ย public void MoveTo(Vector3 direction)
ย ย {
ย ย ย ย moveDirection = direction;
ย ย }
}
item.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public enum ItemType { PowerUp = 0,Chicken = 1}
public class item : MonoBehaviour
{
ย ย [SerializeField]
ย ย private ItemType itemType;
ย ย private Movement2D movement2D;
ย ย private void Awake()
ย ย {
ย ย ย ย movement2D = GetComponent<Movement2D>();
ย ย ย ย float x = Random.Range(-1.0f, 1.0f);
ย ย ย ย float y = Random.Range(-1.0f ,1.0f);
ย ย ย ย movement2D.MoveTo(new Vector3(x, y, 0));
ย ย }
ย ย private void OnTriggerEnter2D(Collider2D collision)
ย ย {
ย ย ย ย if ( collision.CompareTag("Player") )
ย ย ย ย {
ย ย ย ย ย ย Use(collision.gameObject);
ย ย ย ย ย ย Destroy(gameObject);
ย ย ย ย }
ย ย }
ย ย public void Use(GameObject player)
ย ย {
ย ย ย ย switch ( itemType)
ย ย ย ย {
ย ย ย ย ย case ItemType.PowerUp: ย
ย ย ย ย ย ย player.GetComponent<Weapon>().AttackLevel ++;
ย ย ย ย ย ย break;
ย ย ย ย ย case ItemType.Chicken:
ย ย ย ย ย ย player.GetComponent<control>().Score += 100;
ย ย ย ย ย ย break;
ย ย ย ย }
ย ย }
}
์ผ๋ฏธ๋์ฝ๋
๋ฐํ์๋ ์ฝ๋ ์์ , ์์๋ ํ๊ทธ๊ฐ Player์ธ ํ๋ ์ด์ด์ ์ถฉ๋์>useํจ์ ์คํ>์์ดํ ํ์ chicken์ผ๋ก ์ค์ ๋์ด์๊ธฐ์ ๋ด์คํฌ๋ฆฝํธ์์๋ ์ ์๋ณ์ 100์ ์ฌ>์ ํ๊ดด ์์ผ๋ก ๋์๊ฐ๋๊ฑฐ๋ ์์์๋ 2dmovement๋ง ์์
๋ต๊ธ ์ฐ๋ฉด์ ์๊ฐํด๋ดค๋๋ฐ ๋ฐ๋ฅ๊ณผ ์ถฉ๋์ ์ค๋ ฅ๋๋ก ๋จ์ด์ง๋๊ฑฐ ๋ฉ์ถ๊ณ ๊ทธ์๋ฆฌ์ ์ ์งํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ง๋ฉด ๋๋๊ฑด๊ฐ?
rigidbody.MovePosition ํ์ธํด๋ด
Trigger๋ก ์ค์ ํ๋ ๋น์ฐ ์ถฉ๋์ ์ํ์ง - dc App
๊ทธ๊ฑธ ๋๋๊น ํ๋ ์ด์ด๋ ์ถฉ๋ํ๋ ์ ์์ฌ๋ ค์ฃผ๋ ์คํฌ๋ฆฝํธ๊ฐ ์๋์์ํ๋๋ผ
ํ๋ ์ด์ด๋ ์ถฉ๋ํ๋ฉด ์ด์ฐจํผ ์์ด์ ธ์ผ ํ๋๊ฑฐ ์๋? - dc App
https://imgur.com/a/k3OCUVU
์ด๋ ๊ฒ trigger ์ผ๋ฉด<์ฌ๋ผ์ง๋ฉฐ ์ ์์ค๋ฆ trigger๋๋ฉด<์์ฌ๋ผ์ง๊ณ ํ๋ ์ด์ด๋๋ ๋น๋ฒผ์ง
๊ทธ๋๊น ํ๋ ์ด์ด๋ ์ถฉ๋ํ๋ฉด ์ฌ๋ผ์ง๋ฉด์ ์ ์ ์ฌ๋ฆฌ๋ฉด ๋์์. Trigger๋ก ํ ํ์์์ด. ํ๋ ์ด์ด๋ ์ถฉ๋ํ๋ฉด ์ด์ฐจํผ ์ฌ๋ผ์ ธ์ผ ํ๋๊ฑฐ ์๋ ?
๋ง์ ๊ทธ๋ฌ๋ฉด trigger ์์ด๋ ์ถฉ๋์ ์ฌ๋ผ์ง๊ฒ ํ ์์๋จ๊ฑฐ์?
OnCollisionEnter2D
OnCollision์์ ์ถฉ๋ํ ๋์์ด Player์ด๋ฉด ์ ์ ์ฌ๋ ค์ฃผ๊ณ Destroy ํ๋ฉด ๋์์??
Ontrigger์์ OnCollision์ผ๋ก ๋ฐ๊ฟ์ ํด๋ณด๋ ์ถฉ๋ํ๊ณ ๋์ ์ ์์ฌ๋ ค์ฃผ๊ณ Destroy๊ฐ ๋จ! ํ์ง๋ง ๊ทธ ๋ฑ ํ๋ฒ์ ์ถฉ๋๋๋ฌธ์ ๋ด ๊ธฐ์ฒด๊ฐ ๋์๊ฐ๋ฒ๋ฆผใ ใ ์ข๋ ์ฐพ์๋ณด๊ณ ์๋๋ฐฉ๋ฒ๋ ์๋ํด๋ณด๊ฒ ์ ๊ณ ๋ง์์ฉ
๊ทธ๊ฑฐ์ผ ๋ฆฌ์ง๋๋ฐ๋ ์ค์ ํ๋ฉด ๋๋๊ฑฐ๊ณ ๊น๋ํ๊ฒ ํ๊ณ ์ถ์ผ๋ฉด ์๋ ์ ์๊ฑธ๋ก ํด
๊ทธ ์ธ์๋ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ง. ๋ฌผ๋ฆฌ ์ค์ ์์ ํฐ์๊ณต๊ณผ ํ๋ ์ด์ด๋ ์ถฉ๋ํ์ง ์๋๋ก ๋ง๋ค๊ณ ์ค์ ํ๊ณ ํ๋ ์ด์ด๊ฐ ์๊ธฐ ์ฃผ๋ณ์ ๋ ์ด์บ์คํธ๋ก ๊ฒ์ฌํด์ ํฐ์์์ด ๊ฐ๊น์ด์ ์ค๋ฉด ์ ์๋ฅผ ํ๋ํ๊ฒ ๋ง๋๋ ๋ฐฉ๋ฒ์ด ์๊ณ ํฐ์๊ณต์ ์์, ๋ถ๋ชจ ์ค๋ธ์ ํธ๋ก ๋ง๋ค์ด์ ๋ถ๋ชจ์ค๋ธ์ ํธ๋ ํ๋ ์ด์ด์ ์ถฉ๋ํ์ง ์๊ฒ ๋ ์ด์ด๋ฅผ ๋ง๋ค๊ณ IsTrigger๋ฅผ ๋นํ์ฑํ ์์์ค๋ธ์ ํธ๋ IsTrigger๋ก ๋์ด ์๊ณ Player์ ์ถฉ๋ ๊ฐ๋ฅ