triggerstay ์—์„œ ์ธ์‹ํ•˜๋Š” ์‹œ๊ฐ„๋Œ€๊ฐ€ ์•ฝ 1์ดˆ์ •๋„์ธ๋ฐ 1์ดˆ ์ดํ›„์—๋Š” fํ‚ค๋ฅผ ์•”๋งŒ ๋ˆŒ๋Ÿฌ๋„ debug.log ์ฒ˜๋ฆฌ๊ฐ€ ์•ˆ๋ผ์„œ ์กฐ๊ธˆ์”ฉ ์›€์ง์—ฌ์ค˜์•ผ ํŠธ๋ฆฌ๊ฑฐ ์ฒ˜๋ฆฌ๊ฐ€ ๋˜๋”๋ผ๊ณ 

ํ˜น์‹œ ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ๊ฐ€๋งŒํžˆ ์žˆ์–ด๋„ ํ•ด๋‹น ํŠธ๋ฆฌ๊ฑฐ ๋‚ด์— ์žˆ์œผ๋ฉด ์ง€์†์ ์œผ๋กœ ํŠธ๋ฆฌ๊ฑฐ์ฒ˜๋ฆฌ๋ฅผ ๊ณ„์† ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—†์„๊นŒ?

์•„๋ž˜๋Š” ํ˜„์žฌ ์ฝ”๋“œ

void OnTriggerStay2D(Collider2D collision)

{

if (Input.GetKey(KeyCode.F) && collision.gameObject.CompareTag("Player"))

{

Debug.Log("๋‹จ์„œ๋ฅผ ์ž…์ˆ˜ํ–ˆ์Šต๋‹ˆ๋‹ค");

}

Invoke(nameof(OnTriggerStay2D), 1f);

}


์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ์—์„œ ๊ฒ€์ƒ‰ํ•ด๋ณด๋‹ˆ๊นŒ ์ธ๋ณดํฌ ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค๊ธธ๋ ˆ ์ธ๋ณดํฌ๋ฅผ ํ†ตํ•ด์„œ ๋ฐ˜๋ณตํ•ด๋ดค๋Š”๋ฐ ํŠธ๋ฆฌ๊ฑฐ ์ฒดํฌ ์ž์ฒด๋ฅผ ๋ฐ˜๋ณตํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋”๋ผ๊ณ ..

ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ ์ฒดํฌ๋ฐ•์Šค ์•ˆ์—์„œ ์žฅ์‹œ๊ฐ„ ๊ฐ€๋งŒํžˆ์žˆ๋”๋ผ๋„ fํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด ์–ธ์ œ๋“ ์ง€ ์ € debug.log๊ฐ€ ๋œฐ์ˆ˜์žˆ๊ฒŒ ๋งŒ๋“ค๊ณ ์‹ถ์€๋ฐ ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ์ง€ ๊ฐ์ด ์•ˆ์žกํžŒ๋‹ค..


--์ˆ˜์ •



viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73cec85fa11d028318672c324147e3f6f5673e300cbe0092ff229c958d7bb90cf8f35b830c9e52a2c255e3c62fdcd9e1403c9473b74dcacbe197573

ํ˜„์žฌ ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ๋ถ€๋ถ„

10ํšŒ ์ดํ›„๋กœ๋Š” ๋”์ด์ƒ ์ฒดํฌ ๋กœ๊ทธ๊ฐ€ ๋œจ์ง€ ์•Š์Œ


์›ํ•˜๋Š”๊ฒƒ : ์ € ์•ˆ์—์„œ ๊ฐ€๋งŒํžˆ ์žˆ๋”๋ผ๋„ ๊พธ์ค€ํžˆ ์ฒดํฌ๊ฐ€ ๋œจ๋Š”๊ฒƒ


private void OnTriggerEnter2D(Collider2D collision)

{

if (Input.GetKey(KeyCode.F) && collision.gameObject.CompareTag("Player"))

{

Debug.Log("๋‹จ์„œ๋ฅผ ์ž…์ˆ˜ํ–ˆ์Šต๋‹ˆ๋‹ค");

}

}

void OnTriggerStay2D(Collider2D collision)

{

Debug.Log("์ฒดํฌ");

//if (Input.GetKey(KeyCode.F) && collision.gameObject.CompareTag("Player"))

//{

// Debug.Log("๋‹จ์„œ๋ฅผ ์ž…์ˆ˜ํ–ˆ์Šต๋‹ˆ๋‹ค");

//}

////Invoke(nameof(OnTriggerStay2D), 1f);

}

void OnTriggerExit2D(Collider2D collision)

{

if (Input.GetKey(KeyCode.F) && collision.gameObject.CompareTag("Player"))

{

Debug.Log("๋‹จ์„œ๋ฅผ ์ž…์ˆ˜ํ–ˆ์Šต๋‹ˆ๋‹ค");

}

//Invoke(nameof(OnTriggerStay2D), 1f);

}

์ด๋ฅผ ์œ„ํ•œ ์ฝ”๋“œ

stay2d๋ถ€๋ถ„์˜ ๋‹จ์„œ๋ฅผ ์ž…์ˆ˜ ๋ถ€๋ถ„์€ ์ฃผ์„์ฒ˜๋ฆฌํ•˜๊ณ  ์ฒดํฌ๊ฐ€ ๋ช‡๋ฒˆ ๋œจ๋Š”์ง€ ํ™•์ธํ–ˆ์Œ.


๋ง๊ธ€์—์„œ ์ œ๋ณด๋ฐ›์€ ๋ฐฉ๋ฒ• = bool ์„ ์–ธํ›„ enter์— true exit์— false

๊ทธ ํ›„ ์—…๋ฐ์ดํŠธ์—์„œ true ๋™์•ˆ ์ฒ˜๋ฆฌํ•˜๊ธฐ


์ˆ˜์ •2

public class Hint1 : MonoBehaviour

{

bool checksum;

Collider2D col;

void Start()

{

col = GetComponent<Collider2D>();

}

void Update()

{

if(checksum)

{

Debug.Log("์ฒดํฌ");

}

}

private void OnTriggerEnter2D(Collider2D collision)

{

checksum = true;

Debug.Log(checksum);

//if (Input.GetKey(KeyCode.F) && collision.gameObject.CompareTag("Player"))

//{

// Debug.Log("๋‹จ์„œ๋ฅผ ์ž…์ˆ˜ํ–ˆ์Šต๋‹ˆ๋‹ค");

//}

}

void OnTriggerStay2D(Collider2D collision)

{

//Debug.Log("์ฒดํฌ");

//if (Input.GetKey(KeyCode.F) && collision.gameObject.CompareTag("Player"))

//{

// Debug.Log("๋‹จ์„œ๋ฅผ ์ž…์ˆ˜ํ–ˆ์Šต๋‹ˆ๋‹ค");

//}

////Invoke(nameof(OnTriggerStay2D), 1f);

}

void OnTriggerExit2D(Collider2D collision)

{

checksum = false;

Debug.Log(checksum);

//if (Input.GetKey(KeyCode.F) && collision.gameObject.CompareTag("Player"))

//{

// Debug.Log("๋‹จ์„œ๋ฅผ ์ž…์ˆ˜ํ–ˆ์Šต๋‹ˆ๋‹ค");

//}

//Invoke(nameof(OnTriggerStay2D), 1f);

}

ํ˜„์žฌ ์—…๋ฐ์ดํŠธ์—์„œ ์ฒดํฌ๊ฐ€ ๋œ๊ฒƒ ์ž์ฒด๋Š” ํ™•์ธํ•จ

์ด์ œ ์ € ์ƒํƒœ์—์„œ ๋‹ฟ์ธ ๋Œ€์ƒ์ด ํ”Œ๋ ˆ์ด์–ด ํƒœ๊ทธ๋ฅผ ๋‹ฌ๊ณ ์žˆ๋Š” ๋ฌผ์ฒด๊ณ  fํ‚ค๋ฅผ ๋ˆŒ๋ €์„๋•Œ ์ƒํ˜ธ์ž‘์šฉ์ด ๋˜์–ด์•ผํ•˜๋Š”๋ฐ

๊ตฌ์ƒํ•œ ๋ฐฉ๋ฒ•์€

bool checksum;

Collider2D col;

void Start()

{

col = GetComponent<Collider2D>();

}

void Update()

{

if(checksum)

{

if(Input.GetKey(KeyCode.F))

{

Debug.Log("์ฒดํฌ");

}

}

}

private void OnTriggerEnter2D(Collider2D collision)

{

checksum = true;

Debug.Log(checksum);

//if (Input.GetKey(KeyCode.F) && collision.gameObject.CompareTag("Player"))

//{

// Debug.Log("๋‹จ์„œ๋ฅผ ์ž…์ˆ˜ํ–ˆ์Šต๋‹ˆ๋‹ค");

//}

}

void OnTriggerStay2D(Collider2D collision)

{

//Debug.Log("์ฒดํฌ");

//if (Input.GetKey(KeyCode.F) && collision.gameObject.CompareTag("Player"))

//{

// Debug.Log("๋‹จ์„œ๋ฅผ ์ž…์ˆ˜ํ–ˆ์Šต๋‹ˆ๋‹ค");

//}

////Invoke(nameof(OnTriggerStay2D), 1f);

}

void OnTriggerExit2D(Collider2D collision)

{

checksum = false;

Debug.Log(checksum);

//if (Input.GetKey(KeyCode.F) && collision.gameObject.CompareTag("Player"))

//{

// Debug.Log("๋‹จ์„œ๋ฅผ ์ž…์ˆ˜ํ–ˆ์Šต๋‹ˆ๋‹ค");

//}

//Invoke(nameof(OnTriggerStay2D), 1f);

}


--ํ•ด๊ฒฐ

์˜์ƒ ์ฒจ๋ถ€ํ•จ.ย ํ•ด๋‹น ์˜์—ญ์•ˆ์— ์˜ค๋ž˜ ๊ฐ€๋งŒํžˆ ์žˆ์–ด๋„ ์–ธ์ œ๋“  ์ƒํ˜ธ์ž‘์šฉ ํ•  ์ˆ˜ ์žˆ๊ธธ ๋ฐ”๋žฌ์Œ

๊ทผ๋ฐ ๋‚ด๊ฐ€ ์ ‘๊ทผ ์ž์ฒด๋ฅผ ์ž˜๋ชปํ•จ. ์ƒํ˜ธ์ž‘์šฉ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํŠธ๋ฆฌ๊ฑฐ ์ฒดํฌ๊ฐ€ ํ•„์ˆ˜๋‹ˆ๊นŒ stay๋ฌธ์„ ๋ฃจํ”„์‹œํ‚ค๋ฉด๋˜๊ฒ ์ง€? ํ•˜๋Š” ์ƒ๊ฐ์— ์ฐพ์•„๋ดค์œผ๋‚˜ย 

invoke๊ฐ™์€๊ฑธ๋กœ ๋ฐฑ๋‚ ํ•ด๋„ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๊ฐ€ ์•ˆ๋‚˜์˜ด

์ด๋•Œ ๋ง๊ธ€๋กœ ํ•œ๋ถ„์ด enter๊ณผ exit์— bool๋กœ ์ฒดํฌ๋ฐ›๊ณ  update๋กœ ๋Œ๋ ค๋ผ๋Š” ๋ง์„ ๋ณด๊ณ  ํ•ด๋ดค๋Š”๋ฐ ์ •ํ™•ํžˆ ์›ํ•˜๋Š”๋™์ž‘์ด ์‹คํ–‰๋จ

triggerenter, stay, exit์—์„œ ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ๋ณด๋‹ค๋Š” ๊ฐ„๋‹จํ•œ ์ฒดํฌ๋งŒ ๋ฐ›๊ณ  ๋ณธ ๊ธฐ๋Šฅ์€ ์ƒˆ ํ•จ์ˆ˜๋ฅผ ์งœ์„œ ์ˆ˜ํ–‰ํ•˜๋ฉด๋œ๋‹จ๊ฑธ ๊นจ๋‹ฌ์•˜์Œ

๋‚ด๊ฐ€ ๋„ˆ๋ฌด ๋กœ์ง์„ ์ž˜๋ชป์ƒ๊ฐํ–ˆ๋‹จ ์ƒ๊ฐ์ด๋“ค์—ˆ๊ณ  ๋™์‹œ์— ์ข‹์€ ๋กœ์ง ํ•˜๋‚˜ ๋ฐฐ์›Œ๊ฐ

์ง„์งœ ์•Œ๋ ค์ค€ ์œ ๋™๋ถ„ ๋„ˆ๋ฌด ๊ณ ๋ง™๊ณ  ๋งŒ์ˆ˜๋ฌด๊ฐ•ํ•˜๊ธธ ๋ฐ”๋ž€๋‹ค. ๋„ค์‹œ๊ฐ„๊ฐ€๋Ÿ‰ ๋™๋™ ์•“๊ธฐ๋งŒ ํ•˜๊ณ  ํ•ด๊ฒฐ ๋ชปํ•˜๊ณ  ์žˆ์—ˆ๋Š”๋ฐ ๋•๋ถ„์— ํ•œ๋ฐฉ์— ํ•ด๊ฒฐํ–ˆ๋‹ค.

์ง„์งœ ๊ณ ๋ง™๋‹ค.ย