์š”๋งํ•œ Particle System์„ ์ด์šฉํ•˜์—ฌ ๋ณธ๊ฒฉ์ ์œผ๋กœ ํƒ„๋ง‰์„ ๋ฐœ์‚ฌํ•ด๋ณด์ž.


2์ค„ ์š”์•ฝ

- ํŒŒํ‹ฐํด ์‹œ์Šคํ…œ์„ ์Šคํฌ๋ฆฝํŠธ ์ƒ์—์„œ ๋ถˆ๋Ÿฌ์™€ ๊ธฐ์ดˆ ์„ค์ •์„ํ•จ

- ๊ทธ ๋’ค ๋ถˆ๋Ÿฌ์˜จ <ParticleSystem> ๋ณ€์ˆ˜์— .Emit(<ParticleSystem.EmitParams>, Amount)๋กœ ๋ฐฉ์ถœ



์–ด๋–ป๊ฒŒ ๋ฐœ์‚ฌํ•˜์ง€?


๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ์— ๋‹ฌ๋ฆฐ Particle System์˜ ๋ณ€์ˆ˜๋ฅผ ์ผ์ผํžˆ ์กฐ์ ˆํ•˜๋ฉฐ ๋ชจ๋“  ์ƒํ™ฉ์— ๋งž๋Š” ํ˜น์€ ๋ชจ๋“  ๋ฐ”๋ฆฌ์—์ด์…˜์˜ ํƒ„๋ง‰์„ ๋งŒ๋“œ๋Š”๊ฒƒ์€ ์ƒ๋‹นํžˆ ๊ท€์ฐฎ์€ ์ž‘์—…์ด ๋ ๊ฒƒ์ด๋‹ค.


๊ทธ๋ฆฌ๊ณ  ๋‹ค์–‘ํ•œ ์ƒํ™ฉ์— ๋Œ€์‘ํ•˜๊ฑฐ๋‚˜ ํ•ด์•ผํ•˜๋‹ˆ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด์šฉํ•˜์—ฌ ํƒ„๋ง‰์„ ๋ฐœ์‚ฌํ•ด ๋ณด๊ฒ ๋‹ค.



๋‚˜๋ฅผ ์•„๋Š”๊ฒƒ๋„ ์ค‘์š”ํ•˜์ง€๋งŒ ์ ์„ ์•„๋Š”๊ฒƒ๋„ ์ค‘์š”ํ•œ๋ฒ• ์ด๋ฒˆ์— ์Šคํฌ๋ฆฝํŠธ์—์„œ ์‚ฌ์šฉํ•  ํŒŒํ‹ฐํด ์‹œ์Šคํ…œ์˜ ์„ธ๋ถ€ ๋ชฉ๋ก์„ ์‚ด์ง๋งŒ ๋ณด๊ณ  ๊ฐ€์•ผ๊ฒ ๋‹ค.


๋งŒ์•ฝ ํŒŒํ‹ฐํด ์‹œ์Šคํ…œ์— ์ž์„ธํ•œ ์„ค๋ช…์„ ๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด ๊ตฌ๊ธ€๋ง์„ ํ•˜๋Š”ํŽธ์ด ์ข‹์„๊ฒƒ ๊ฐ™๋‹ค.


7cf3c028e2f206a26d81f6e744887c6e


์šฐ์„  ๊ฐ€์žฅ ๋ˆˆ์— ๋„์ด๋Š” ๋งจ ์œ„์˜ ํ•ญ๋ชฉ๋ถ€ํ„ฐ ๋ณด๊ณ  ๊ฐ€๊ฒ ๋‹ค.

์šฐ๋ฆฐ ํŒŒํ‹ฐํด์„ ์ฝ”๋“œ์—์„œ Emitํ•˜์—ฌ ์‚ฌ์šฉํ• ๊บผ๊ธฐ ๋•Œ๋ฌธ์— ๋ช‡๋ช‡ ํ•ญ๋ชฉ์€ ๊ณ ๋ คํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.


Start Lifetime - ๋ฐœ์‚ฌํ•  ๋•Œ ์ƒ๋ช…์ฃผ๊ธฐ์ด๋‹ค.

Start Speed - ๋ฐœ์‚ฌํ• ๋•Œ์˜ ์ดˆ๊ธฐ ์†๋„์ด๋‹ค.

Start Size - ์‹œ์ž‘ํ• ๋•Œ ์‚ฌ์ด์ฆˆ์ด๋‹ค.

Gravity Modifier - ์ค‘๋ ฅ ์ˆ˜์น˜๋ฅผ ์–ผ๋งˆ๋‚˜ ๋ฐ›์„์ง€์ด๋‹ค.

Simulation Space - ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋˜๋Š” ๊ณต๊ฐ„์ด๋‹ค. Local, World, Custom์ด ์กด์žฌํ•˜๋ฉฐ Local์€ ๋กœ์ปฌ ์˜์—ญ์—์„œ์˜ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ Emit๋˜๋Š” ๊ณผ์ •์ค‘์— ํŒŒํ‹ฐํด ์‹œ์Šคํ…œ์ด ๋ถ™์–ด์žˆ๋Š” ๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ์˜ ํฌ์ง€์…˜์„ ๋ฐ”๊พธ๋ฉด ํŒŒํ‹ฐํด๋„ ๋”ฐ๋ผ๋‹ค๋‹Œ๋‹ค. World๋Š” WorldSpace์—์„œ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ํ•˜๋Š”๊ฒƒ์œผ๋กœ ๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ์˜ ํฌ์ง€์…˜์„ ๋ฐ”๊ฟ”๋„ ํŒŒํ‹ฐํด์€ ๊ทธ๋Œ€๋กœ ์ž๊ธฐ ๊ฐˆ๊ธธ์„ ๊ฐ„๋‹ค.

Simulation Speed - ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋˜๋Š” ์†๋„์ด๋‹ค. ๋ฐฐ์†๊ฐ™์€๊ฑฐ๋ผ ๋ณด๋ฉด ๋œ๋‹ค.

Emitter Velocity - ํŒŒํ‹ฐํด์˜ ์†๋„๋ฅผ ๊ณ„์‚ฐํ•˜๋Š”๋ฐ์— Rigidbody๋ฅผ ์‚ฌ์šฉํ• ์ง€ Transform์„ ์‚ฌ์šฉํ• ์ง€๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค.

Max Particles - ์ตœ๋Œ€ ํŒŒํ‹ฐํด์˜ ๊ฐฏ์ˆ˜์ด๋‹ค ํƒ„์•ฝ ํƒ„๋ง‰์„ ์˜๋Š”๋Œ€ ์ œํ•œ์— ๊ฑธ๋ ค ์˜๋„ํ•œ ํŒจํ„ด์„ ๋ชป ๋ณด์—ฌ์ค„ ์ˆ˜ ๋„ ์žˆ์œผ๋‹ˆ ์ž˜ ์ฒดํฌํ•˜๋Š”๊ฒƒ์ด ์ข‹๋‹ค.

...


์•„์ฐธ 4๊ฐ€์ง€์˜ ์„ ํƒ ์˜ต์…˜์ด ์žˆ๋Š” ์นœ๊ตฌ๋“ค์ด ์žˆ๋‹ค. ํ•ญ๋ชฉ์˜ ์šฐ์ธก ์•„๋ž˜ ์‚ผ๊ฐํ˜•์„ ๋ˆ„๋ฅด๋ฉด 4๊ฐ€์ง€ ์˜ต์…˜์ด ๋œฌ๋‹ค.


74f3c028e2f206a26d81f6e7438370

Constant ํ•˜๋‚˜์˜ ๊ฐ’

Curve AnimationCurve ์—๋‹ˆ๋ฉ”์ด์…˜ ์ปค๋ธŒ๋ฅผ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค

Random Between Two Constants ๋‘๊ฐœ์˜ ๊ฐ’์ค‘ ์‚ฌ์ด์˜ ๊ฐ’์„ ๋žœ๋ค์œผ๋กœ ์ถœ๋ ฅํ•œ๋‹ค

Random Between Two Curves ์ดํ•˜ ๋™๋ฌธ


ํ•œ๋ฒˆ์”ฉ ๋ˆŒ๋Ÿฌ๋ณด๊ณ  ๊ฐ’์„ ๋„ฃ์–ด๊ฐ€๋ฉฐ ํ…Œ์ŠคํŠธ ํ•ด๋ณด๋Š”๊ฒƒ๋„ ์ข‹๋‹ค.



7ff3c028e2f206a26d81f6e0418577

์šฐ๋ฆฌ๊ฐ€ ์ˆ˜๋™์œผ๋กœ ์‚ฌ์ถœํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ์นœ๊ตฌ๋‹ค


ํ•˜์ง€๋งŒ ์—ฌ๋Ÿฌ ์ˆ˜์น˜๋ฅผ ๋„ฃ์–ด๋ณด๊ณ  ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด์„  Emission์„ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ์ข‹๋‹ค.

ย 


7ef3c028e2f206a26d81f6e44487706e

Shape๋Š” ๋ถ„์‚ฌ๊ตฌ์˜ย ๋ชจํ˜•?์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด๋‹ค.


๋ณธ์ธ์€ Edge์— Radius๋ฅผ 0์œผ๋กœ ์ž…๋ ฅ(0.0001)ํ•˜์˜€๋‹ค.

Align To direction์„ ์ฒดํฌํ•ด์ฃผ์—ˆ๋‹ค.ย 


79f3c028e2f206a26d81f6e345807d

Velocity over Lifetime ๋ง๊ทธ๋Œ€๋กœ ์‚ด์•„์žˆ๋Š”๋™์•ˆ Velocity๋ฅผ ๋ณ€๊ฒฝํ•ด์ฃผ๋Š” ์นœ๊ตฌ๋‹ค

์ด๋ฒˆ์—” Speed Modifier๋งŒ ์‚ฌ์šฉํ• ๊ฒƒ์ด๋ฉฐ ๊ธฐ๋Šฅ์€ ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ์ด๋‹ค.


78f3c028e2f206a26d81f6e1428971


Force Field์— ์–ผ๋งˆ๋‚˜ ์˜ํ–ฅ์„ ๋ฐ›์„์ง€๋‚˜ ๋งˆ์Šคํฌ๋“ฑ์„ ์„ค์ • ๊ฐ€๋Šฅํ•˜๋‹ค.




๋‹ค์Œ์— ๋‚˜์˜ฌ ํ•ญ๋ชฉ์„ ๋ณด๊ธฐ์ „์— ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์ € ๋งํ•  ํŒŒํ‹ฐํดํ•˜๊ณ  ํ”Œ๋ ˆ์ด์–ด์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ์ด๋Œ์–ด๋‚ผ์ง€์— ๋Œ€ํ•œ ๋ถ€๋ถ„์ด๋‹ค.


์‚ฌ์‹ค Triggers๋งŒ ๋ดฃ์—ˆ๋Š”๋ฐ ๊ธ€์“ฐ๋‹ค ๋ณด๋‹ˆ Collision์—๋„ ๋ช‡๋ช‡ ๊ธฐ๋Šฅ์ด ์žˆ์–ด ํ˜ธ๋‹ค๋‹ฅ ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ–ˆ๋‹ค


์ผ์ง€๋Š” ์‹ ์ด์•ผ


Collision๊ณผ Triggers...


7ced9e36ebd518986abce8954787736b2e


์šฐ์„  Collision์€ ์šฐ๋ฆฌ๊ฐ€ ์•„๋Š” ๊ทธ Collision์ด๋‹ค.


์–ด๋””์— ์‹œ๋ฎฌํ• ๊ฑด์ง€ ๋ชจ๋“œ๋“ฑ์„ ์„ ํƒ๊ฐ€๋Šฅํ•˜๊ณ  ๋‹ค์–‘ํ•œ ์˜ต์…˜์ด ์žˆ๋Š”๋ฐ ๋ช‡๋ช‡ ๊ธฐ๋Šฅ์— ์ง‘์ค‘ํ•ด๋ณด๊ฒ ๋‹ค.


>>Lifetime Loss<< ์ด ํ•ญ๋ชฉ์€ ์ถฉ๋Œ์‹œ ์ƒ๋ช…์ฃผ๊ธฐ๊ฐ€ ์–ผ๋งˆ๋‚˜ ๊นŽ์ผ์ง€์ด๋‹ค. 0~1๊นŒ์ง€์˜ ๊ฐ’์ด ์žˆ๊ณ  0์œผ๋กœ ์„ค์ •ํ•  ๊ฒฝ์šฐ ์ „ํ˜€ ๊นŽ์ด์ง€ ์•Š์œผ๋ฉฐ 1๋กœ ์„ค์ •ํ•  ๊ฒฝ์šฐ ๋‚จ์€ ์ƒ๋ช…์ฃผ๊ธฐ์ธ์ง€ ๊ทธ๋ƒฅ ์ƒ๋ช…์ฃผ๊ธฐ์ธ์ง€๊ฐ€ย ์ „๋ถ€ ๊นŽ์ธ๋‹ค

ํŒŒํ‹ฐํด์„ ํƒ„์œผ๋กœ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ์—๋Š” ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ด๋ผ ์ƒ๊ฐํ•œ๋‹ค.


Radius Scale ์ด๊ฑด ํŒŒํ‹ฐํด์— ๋ถ™์€ ์ฝœ๋ฆฌ์ ผ์˜ ํฌ๊ธฐ๋ฅผ ์„ค์ •ํ•ด์ฃผ๋Š” ๋…€์„์ด๋‹ค. ์‹ค์งˆ์ ์œผ๋กœ ๋ณด์ด๋Š” ํŒŒํ‹ฐํด์— ๋งž์ถฐ์„œ ์„ค์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

Gollision Quality๋Š” High Middle Low๊ฐ€ ์žˆ๋Š”๋ฐ ์ƒํ™ฉ์— ๋งž์ถฐ ์„ค์ •ํ•˜๋ฉด ๋˜์ง€๋งŒ ์—ฌ๊ธฐ์„  High๋กœ ์„ค์ •ํ•˜๊ฒ ๋‹ค.


์ฝœ๋ฆฌ์ „ ๋ ˆ์ด์–ด๋„ ์„ค์ •ํ•ด์ฃผ๊ณ  ๊ฐ€์žฅ ์ค‘์š”ํ•œ์š”์†Œ๋Š” ๋งจ ์•„๋ ˆ์— ์žˆ๋‹ค.


Send Collision Messages์™€ Visualize Bounds๋‹ค.


Visualize Bounds๋Š” ์ฝœ๋ฆฌ์ „์˜ ํฌ๊ธฐ๋ฅผ ์”ฌ ์ƒ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•˜๋‹ค.


Send Collision Messages๋Š” ๋ฌผ๋ฆฌ ์ถฉ๋Œ์‹œ์—ย ํ•ด๋‹น ํŒŒํ‹ฐํด ์‹œ์Šคํ…œ์— ๋‹ฌ๋ฆฐ ์Šคํฌ๋ฆฝํŠธ์—์„œย OnParticleCollision(GameObject ~~~)๋ฅผ ํ˜ธ์ถœํ•ด์ค€๋‹ค.


์ค‘์š”ํ•œ๊ฑด ์ถฉ๋Œํ•œ ์˜ค๋ธŒ์ ํŠธ์˜ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•ด ์ค€๋‹ค๋Š”๊ฒƒ์ด ๊ฐ€์žฅ ํฐ ์š”์ ์ด๋‹ค.


์ด๋ฅผ ํ†ตํ•˜์—ฌ ๋‹ค๋ฅธ ๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ์™€ ์ƒํ˜ธ์ž‘์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.




๋‹ค์Œ์œผ๋กœ ์•Œ์•„๋ณผ๊ฑด Triggers์ด๋‹ค.


7bf3c028e2f206a26d81f6e2408475


์–ด๋–ป๊ฒŒ ๋ณด๋ฉด ํ•ต์‹ฌ์ด์˜€๋˜ย ๋ถ€๋ถ„์ธ Triggers ๋ถ€๋ถ„์ด๋‹ค.


๊ทœ์น™์€ ์˜๋ฌธ๋ช… ๊ทธ๋Œ€๋กœ์ด๋ฉฐ 3๊ฐ€์ง€ ์˜ต์…˜์ด ์žˆ๋‹ค. Kill,ย Ignore, Callback.


Kill์€ ํ•ด๋‹น ํŒŒํ‹ฐํด์„ ์ฃฝ์—ฌ๋ฒ„๋ฆฐ๋‹ค.

Ignore์€ ๋ง๊ทธ๋Œ€๋กœ ์•„๋ฌด์ผ๋„ ์—†๋‹ค.

>> Callback << ์šฐ๋ฆฌ๊ฐ€ Callback ์„ค์ •์„ ํ†ตํ•˜์—ฌ ํŒŒํ‹ฐํด์ด ํ”Œ๋ ˆ์ด์–ด์— ํ•ด๋‹นํ•˜๋Š” ์˜ค๋ธŒ์ ํŠธ์—๊ฒŒ ๋‹ฟ์•˜๋Š”์ง€๋ฅผ ๊ฒ€์ถœํ• ๊ฒƒ์ด๋‹ค.


๋ณธ์ธ์ด ์ง€์‹์ด๋‚˜ ๊ตฌ๊ธ€๋ง ์‹ค๋ ฅ์ด ๋ถ€์กฑํ•ด์„œ ๊ทธ๋Ÿฐ์ง€ ๋ชฐ๋ผ๋„ ํŒŒํ‹ฐํด์— ์ถฉ๋Œ๋œ ์˜ค๋ธŒ์ ํŠธ์˜ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์ง€๋ฅผ ๋ชปํ–ˆ์—ˆ๋‹ค.

์ด๋ถ€๋ถ„์€ Collision์„ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๋‹ˆ ์ง€๊ธˆ์€ ๋‚ด๋‹ค ๋ฒ„๋ฆด๋•Œ๊ฐ€ ๋œ๊ฒƒ๊ฐ™๋‹ค.


Inside,ย OutSide,ย Enter,ย Exit ํ•ด๋‹น ์กฐ๊ฑด๋“ค์— 3๊ฐ€์ง€ ์˜ต์…˜์„ ์„ค์ •ํ•˜์—ฌ ์ž…๋ง›๋Œ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.


Radius Scale - ํŠธ๋ฆฌ๊ฑฐ ์ฝœ๋ผ์ด๋”์˜ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•ด์ค€๋‹ค.

Visualize Bounds - ํŠธ๋ฆฌ๊ฑฐ ์ฝœ๋ผ์ด๋”?์˜ ์›ย ๋ฒ”์œ„๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.


7af3c028e2f206a26d81f6ed4e827c


์ด๋Ÿฐ์‹์œผ๋กœ ์„ค์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

Callback์€ Collision์—์„œ ์„ค๋ช…ํ•œ๊ฑฐ์™€ ๋น„์Šทํ•˜๊ฒŒย OnParticleTrigger()๋ฅผ ํ˜ธ์ถœํ•ด์ค€๋‹ค.


์ถฉ๋Œ๋œ ์˜ค๋ธŒ์ ํŠธ์˜ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๋Š”๋ฒ•...์€ ์ž˜ ๋ชจ๋ฅด๊ฒ ๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์งค๋ง‰ํ•œ ์ฝ”๋“œ๋ฅผ ๋„ฃ๊ฒ ๋‹ค.


ParticleSystem ps = GetComponent<ParticleSystem>();

ย  ย  ย  ย  List<ParticleSystem.Particle> enter = new List<ParticleSystem.Particle>();

ย  ย  ย  ย  int numEnter = ps.GetTriggerParticles(ParticleSystemTriggerEventType.Enter, enter);

ย  ย  ย  ย  if (numEnter > 0)

ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  Debug.Log("Enter");

ย  ย  ย  ย  }


์ด๋Ÿฐ์‹์œผ๋กœ enter๋œ ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์žˆ์œผ๋ฉด Debug.Log("Enter");๋ฅผ ์ฐ์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•œ ์ฝ”๋“œ์ด๋‹ค.


ํŒŒํ‹ฐํด์˜ ์ •๋ณด๋ฅผ ์ „๋ถ€ ๊ฐ€์ ธ์™€์„œ ๋ญ ํ•˜๋Š”๊ฒƒ ๊ฐ™์€๋ฐ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค.


๋” ๋งŽ์€ ์ •๋ณด๋Š” ๊ตฌ๊ธ€๋ง์œผ๋กœ ์•Œ์•„๋ณด๋ฉด ์ข‹์„๊ฒƒ ๊ฐ™๋‹ค.



75f3c028e2f206a26d81f6e745827168


๋ Œ๋”๋Ÿฌ ๋ถ€๋ถ„์ด๋‹ค.


๋ณธ์ธ์€ ๋‹ค๋ฅธ ๋ถ€๋ถ„์€ ํฌ๊ฒŒ ์„ค์ •ํ•˜์ง€ ์•Š์•˜๊ณ  Render Mode๋ฅผ Stretched Billboard๋กœ Length Scale์„ 1๋กœ ์„ค์ •ํ–ˆ๋‹ค.

์ด ์˜ต์…˜์€ ํŒŒํ‹ฐํด์„ ์นด๋ฉ”๋ผ๊ฐ€ ๋ฐ”๋ผ๋ณด๋Š” ๋ฐฉํ–ฅ์— ๋งž์ถฐ ๋ Œ๋”ํ•ด์ฃผ๋Š” ์˜ต์…˜์ด๋‹ค.




ํŒŒํ‹ฐํด์˜ ์—ฌ๋Ÿฌ ์˜ต์…˜์„ ์„ค์ •ํ•˜๋ฉฐ ๋งŒ์ง€์ž‘ ๊ฑฐ๋ฆฌ๋‹ค๋ณด๋‹ˆ ์ด์ „๊ณผ ๋‹ฌ๋ผ์ง„ ์˜ต์…˜๋“ค์ด ์กด์žฌํ•œ๋‹ค.


์šฐ์„  ๋ชจ์ฒด GameObject์˜ Rotation์˜ Y๋ฅผ 90์œผ๋กœ ๋‚˜๋จธ์ง„ 0์œผ๋กœ ์„ค์ •ํ–ˆ๋‹ค.




์Šคํฌ๋ฆฝํŠธ์—์„œ ํŒŒํ‹ฐํด์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์„ค์ •์„ ํ•ด์ค€ ๋’ค ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด์ง„ ParticleSystem ๋ณ€์ˆ˜์—ย (GetComponentํ•˜๋˜ ์ธ์ŠคํŽ™ํ„ฐ์—์„œ ๋„ฃ๋˜) ์ฐธ์กฐ Emit(<EmitParams> , Amount)ํ•˜๋ฉด ํŒŒํ‹ฐํด์ด ์‚ฌ์ถœ๋œ๋‹ค.




05b2de23fcd139ab2eed86e7449c756d5aac6ae0deb416a6db7deb283a8a50b0f60663cc9dd1c8bfd6a1d7485105b2de23fcd139ab2eed86e7449c756d5aac6ae0deb416a6da7de9283a8a50b08142ad1b38368f70971fe2610d

์š”๋Ÿฐ์‹์œผ๋กœ ๋ฐฉ์ถœ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.



05b2de23fcd139ab2eed86e7449c756d5aac6ae0deb416a6d77deb2e3a8a50b0356b4a006bc3db9b25bc35b891


์ด๋Ÿฐ์‹์œผ๋กœ ๋””๋ฒ„๊ทธ ๋กœ๊ทธ๋„ ์ž˜ ์ฐํžˆ๊ณ 


05b2de23fcd139ab2eed86e7449c756d5aac6ae0deb416a6d77ded2b3a8a50b0047d28c50829a8fdd9a6a974b6

ํผํฌ๋จผ์Šค๋„ ๋ฌด๋‚œํ•˜๊ฒŒ ์ž˜ ๋‚˜์˜ค๋Š”๊ฒƒ ๊ฐ™๋‹ค

๊ทผ๋ฐ ๋ถ„๋ช… ์•„๊นŒ๋Š” ์ด๋ ‡๊ฒŒ๊นŒ์ง€ ๋‚˜์˜ค์ง€ ์•Š์•˜๋Š”๋ฐ 16ms์ •๋„์˜€๋Š”๋ฐ ๊ฐ‘์ž๊ธฐ ์™œ ํผํฌ๋จผ์Šค๊ฐ€ ์ข‹์•„์ง„๊ฑด์ง„ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค


์•”ํŠผ ์˜ค๋Š˜์€ ์Šคํฌ๋ฆฝํŠธ์—์„œ Emit() ํ•˜๋Š”๊ฒƒ ๊นŒ์ง€ ๊ฒช์—ˆ๋˜ ์‹œํ–‰์ฐฉ์˜ค๋‚˜ ์ฒ˜์Œ ์ ‘๊ทผํ•  ๋•Œ ๋ณด๋ฉด ์ข‹์„๊ฒƒ ๊ฐ™์€๊ฒƒ์„ ์ข€ ์ ์—ˆ๋‹ค.


์Šคํฌ๋ฆฝํŠธ ๊ด€๋ จํ•ด์„œ๋Š” ๊ณ„์† ์ ์–ด๋‚˜๊ฐ€๋ฉฐ ๋ฐ”๋€Œ๋Š”๊ฑธ ๋ณด์—ฌ์ค„๋ ค ํ–ˆ๋Š”๋ฐ ์—ฌ๊ฐ„ ๊ท€์ฐฎ์€๊ฒŒ ์•„๋‹ˆ์—ฌ์„œ ์—ฌ๊ธฐ์— ์“ด ์Šคํฌ๋ฆฝํŠธ ์˜ฌ๋ ค๋†“๊ณ  ๋Ÿฐ์„ ํ•ด์•ผํ• ๊ฒƒ ๊ฐ™๋‹ค


ํŒŒํ‹ฐํด ๊ด€๋ จํ•ด์„œ ์•„๋Š”๊ฒŒ ์ด๊ฒƒ๋ฐ–์— ์—†์–ด์„œ ๊ฐ€๋ฌธ์˜ ๋น„๋ฐ€๊ฐ™์€ ๋А๋‚Œ์ธ๋ฐ ์ด์ชฝ์œผ๋กœ ๋„์ „ํ•  ์‚ฌ๋žŒ์—๊ฒŒ ๋„์›€์ด ๋˜๋ฉด ์ข‹์„๊ฒƒ ๊ฐ™๊ณ ย ๋‚˜๋„ ์ฒ˜์Œ ์ด๊ฑธ๋กœ ๋„์ „ํ• ๋•Œ ์ง„์งœ ์ •๋ณด ์•ˆ๋‚˜์™€์„œ ใ…ˆ๊ฐ™์•˜๋Š”๋ฐ


ํ•ด๋ณด๊ณ  ์ž˜๋˜๋ฉด ๋˜ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์„ ๋„์™€์ฃผ์„ธ์šฉ



๋ญ ์•”ํŠผ ์ด๋ฒˆ ์ผ์ง€์˜ ์š”์ง€๋Š” ํŒŒํ‹ฐํด์„ ์Šคํฌ๋ฆฝํŠธ๋กœ ๋ฐœ์‚ฌํ•˜๊ณ  ํƒ„๋ง‰์ฒ˜๋Ÿผ ๋‹ค๋ฅธ ๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š”๊ฒƒ ๊นŒ์ง€ ํ–ˆ๋‹ค.


=========================

๋ชฉํ‘œ ์ง€์  < ๋ณ€๋™๋  ์ˆ˜ ์žˆ์Œ >


1. ํŒŒํ‹ฐํด ์‹œ์Šคํ…œ์˜ ์„ค์ •ย 


2. ํŒŒํ‹ฐํด ์‹œ์Šคํ…œ์„ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์กฐ์ •ย <-- ํ˜„์ œ ์œ„์น˜

3. ๊ฐ„๋‹จํ•œ ํŒจํ„ด์„ ๋งŒ๋“ค์–ด๋ณด๊ธฐย <-- ํ˜„์ œ ์œ„์น˜


4. ์—ฌ๋Ÿฌ ํŒจํ„ด์„ ์ด์–ด ์—ฐ์†์ ์œผ๋กœ ๊ทธ๋ฆฌ๊ณ  ๋™์‹œ์— ๋‹ค์–‘ํ•œ ํŒจํ„ด์„ ๋ถ„์‚ฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ

5. ๋ณตํ•ฉ์ ์ธ ํŒจํ„ด์„ ๋งŒ๋“ค์–ด ๋ณด๊ธฐ

6. ์ฝ”๋“œ์ƒ์œผ๋กœ ๋ฏธ๋ฆฌ ์ œ์ž‘๋œ ํŒจํ„ด์„ ScriptAbleObject ํ˜น์€ Excel๋“ฑ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์—ฌ ํƒ€ ์ธ์›๋„ ์‰ฝ๊ฒŒ ํŒจํ„ด์„ ์ œ์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ

7. ์ง€์˜ฅ์˜ ํด๋ฆฌ์‹ฑ ์ž‘์—…

=========================


๋‹ค์Œ์— ํ•  ์ž‘์—…์€ ์ข€ ์‹œ๊ฐ„์ด ์˜ค๋ž˜๊ฑธ๋ฆฌ๋Š” ์ž‘์—…์ด๋ผ ์–ธ์ œ ๋‹ค์‹œ ์˜ฌ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ๋‹ค์Œ์— ๋˜ ์˜ฌ๊ป˜์š”


๊ธด๊ธ€ ์ฝ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.




<Script>

ํ•˜๋‹จ์˜ ์ฝ”๋“œ๋Š” ๊ฐ€๋…์„ฑ๋„ ์—‰๋ง์ด๊ณ  ๋ณ„๋กœ์ง€๋งŒย ํ˜น์‹œ ์ฐธ๊ณ ํ•  ์‚ฌ๋žŒ์€ ์ฐธ๊ณ ํ•ด์ฃผ์‹ญ์‡ผ



using System.Collections;

using System.Collections.Generic;

using UnityEngine;

//using UnityEngine.ParticleSystemJobs;



public class ParticleSetup : MonoBehaviour

{


ย  ย  [SerializeField] private int BulletWay;


ย  ย  [SerializeField] private Collider2D TestCollider2D;

ย  ย  [SerializeField] private float EmitTime;

ย  ย  [SerializeField] public bool EMIT_END = false;

ย  ย  [SerializeField] private bool earlySpeedSet;

ย  ย  [SerializeField] private bool earlySpeedCurve;

ย  ย  [Tooltip("False << True >>")]

ย  ย  [SerializeField] private bool RotationDirection;


ย  ย  [SerializeField] protected ParticleSystem system;ย  ย  ย  ย  ย  ย  ย  ย //๋ฉ”์ธ์œผ๋กœ ์‚ฌ์šฉํ•  ๋…€์„

ย  ย  [SerializeField] protected ParticleSystem.EmitParams emitparam;

ย  ย  [SerializeField] protected ParticleSystem.ShapeModule Moduleshape;


ย  ย  protected Vector3 vParticleRotation;ย  ย  ย  ย  //ํŒŒํ‹ฐํด์„ ๋Œ๋ฆด๋–„ ์“ธ ๋ฒก3

ย  ย  protected Vector3 vTmpParticleRotation;ย  ย  ย //์ž„์‹œ๋กœ ํšŒ์ „๊ฐ’์„ ๊ฐ€์งˆ ๋ฒก3


ย  ย  [SerializeField] protected float fStartSize;ย  ย  ย  ย  //์‹œ์ž‘ ์‚ฌ์ด์ฆˆ

ย  ย  [SerializeField] protected float fBulletStartSpeed; //์‹œ์ž‘ ์†๋„

ย  ย  [SerializeField] protected float fLifeTime;ย  ย  ย  ย  ย //์ƒ๋ช… ์ฃผ๊ธฐ


ย  ย  [SerializeField] protected AnimationCurve StartSpeedCurve;


ย  ย  [SerializeField] private bool EnableVOL;

ย  ย  [SerializeField] protected AnimationCurve VeloOverTimeCurve;


ย  ย  class cStartSpeed

ย  ย  {

ย  ย  ย  ย  TypeStartSpeed Select;


ย  ย  ย  ย  public float fStartSpeed;

ย  ย  ย  ย ย 


ย  ย  }


ย  ย  enum TypeStartSpeed

ย  ย  {

ย  ย  ย  ย  Constant,

ย  ย  ย  ย  Curve,

ย  ย  }


ย  ย  private void Awake()

ย  ย  {


ย  ย  ย  ย  Initialize();

ย  ย  ย  ย  TestEmit();


ย  ย  }


ย  ย  private void TestEmit()

ย  ย  {

ย  ย  ย  ย  Debug.Log("Emit Start by CorFunc...");

ย  ย  ย  ย  StartCoroutine(corFunc_TestEmit());

ย  ย  }


ย  ย  /// <summary>

ย  ย  /// ํ…Œ์ŠคํŠธ Emit์€ ๊ฝƒ๋ชจ์–‘์„ ๊ทธ๋ฆฌ๋ฉฐ ๋ฐœ์‚ฌํ•˜๊ฒŒ ํ•  ์˜ˆ์ •.

ย  ย  /// </summary>

ย  ย  /// <returns></returns>

ย  ย  private IEnumerator corFunc_TestEmit()

ย  ย  {

ย  ย  ย  ย  //ํšŒ๋‹น ํšŒ์ „๋ฅ 

ย  ย  ย  ย  //1๋„์”ฉ ํšŒ์ „...


ย  ย  ย  ย  WaitForSeconds wfs = new WaitForSeconds(EmitTime);

ย  ย  ย  ย  WaitForSeconds wfs2 = new WaitForSeconds(3f);


ย  ย  ย  ย  if (BulletWay <= 0) { BulletWay = 1; }


ย  ย  ย  ย  //x์ถ•์„ ๋ณ€๊ฒฝํ•˜๋ฉด ํšŒ์ „ + ๋˜๋ฉด ์‹œ๊ณ„๋ฐฉํ–ฅ์œผ๋กœ ํšŒ์ „

ย  ย  ย  ย  while (true)

ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  //30ํšŒ ์‚ฌ์ดํด

ย  ย  ย  ย  ย  ย  for (int j = 0; j < 30; j++)

ย  ย  ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  ย  ย  //30ํšŒ ์‚ฌ์ดํด ์ค‘ 1ํšŒ๋‹น BulletWay ๋งŒํผ์˜ ํƒ„๋ง‰์„ ์‚ฌ๋ฐฉ์— ๋ฐœ์‚ฌ

ย  ย  ย  ย  ย  ย  ย  ย  if(RotationDirection) vParticleRotation.x -= 0.5f;

ย  ย  ย  ย  ย  ย  ย  ย  else vParticleRotation.x += 0.5f;

ย  ย  ย  ย  ย  ย  ย  ย  for (int i = 0; i < BulletWay; i++)

ย  ย  ย  ย  ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  vTmpParticleRotation.x = ((360f / (float)BulletWay) * i) + vParticleRotation.x;//๊ฐ๋„...

ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  Moduleshape.rotation = vTmpParticleRotation;

ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  system.Emit(emitparam, 1);

ย  ย  ย  ย  ย  ย  ย  ย  }


ย  ย  ย  ย  ย  ย  ย  ย  yield return wfs;

ย  ย  ย  ย  ย  ย  }


ย  ย  ย  ย  ย  ย  yield return wfs2;


ย  ย  ย  ย  ย  ย  if (EMIT_END)

ย  ย  ย  ย  ย  ย  ย  ย  break;


ย  ย  ย  ย  }


ย  ย  }


ย  ย  private void Initialize()

ย  ย  {

#if UNITY_EDITOR

ย  ย  ย  ย  if (system == null)

ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  if (!TryGetComponent<ParticleSystem>(out system))

ย  ย  ย  ย  ย  ย  ย  ย  system = this.gameObject.AddComponent<ParticleSystem>();

ย  ย  ย  ย  ย  ย  Debug.LogError("PARTICLE SYSTEM IS NULL ADDCOMPONET PARTICLE SYSTEM : " + this.gameObject);

ย  ย  ย  ย  }

#endifย 


ย  ย  ย  ย  ParticleInitialize();


ย  ย  }


ย  ย  /// <summary>

ย  ย  /// Particle Init...

ย  ย  /// </summary>

ย  ย  private void ParticleInitialize()

ย  ย  {

ย  ย  ย  ย  vParticleRotation = new Vector3();

ย  ย  ย  ย  vParticleRotation = Vector3.zero;

ย  ย  ย  ย  vTmpParticleRotation = new Vector3();

ย  ย  ย  ย  vTmpParticleRotation = Vector3.zero;


ย  ย  ย  ย  emitparam = new ParticleSystem.EmitParams();

ย  ย  ย  ย  emitparam.startColor = Color.white;

ย  ย  ย  ย  emitparam.startSize = fStartSize;



ย  ย  ย  ย  //๋ Œ๋”๋Ÿฌ ์…‹ํŒ…


ย  ย  ย  ย  //์ƒ‰์ƒ ํฌ๊ธฐ ๋ฐ ์ดˆ๊ธฐ ์Šคํ”ผ๋“œ ์„ค์ •

ย  ย  ย  ย  var MainModule = system.main;

ย  ย  ย  ย  MainModule.maxParticles = 20000;ย  ย  //ํƒ„์˜ ์ตœ๋Œ€ ๊ฐฏ์ˆ˜ ์„ค์ •

ย  ย  ย  ย  //MainModule.startColor = bulletColor;

ย  ย  ย  ย  MainModule.startSize = fStartSize;ย  ย  //์‹œ์ž‘ ์‚ฌ์ด์ฆˆ

ย  ย  ย  ย ย 

ย  ย  ย  ย  //if (!earlySpeedSet)

ย  ย  ย  ย  //ย  ย  MainModule.startSpeed = fBulletStartSpeed;ย  //์‹œ์ž‘ ์†๋„

ย  ย  ย  ย  //var mainSpeed = MainModule.startSpeed;// = ParticleSystemCurveMode.Curve;

ย  ย  ย  ย ย 

ย  ย  ย  ย  var mainSpeed = MainModule.startSpeed;

ย  ย  ย  ย  mainSpeed.mode = ParticleSystemCurveMode.Curve;


ย  ย  ย  ย  for(int i = mainSpeed.curve.keys.Length - 1; i > 0; i--)

ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  mainSpeed.curve.RemoveKey(i);

ย  ย  ย  ย  ย  ย  Debug.Log("REMOVE KEY");

ย  ย  ย  ย  }


ย  ย  ย  ย  if (earlySpeedCurve)

ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  mainSpeed.curve = StartSpeedCurve;

ย  ย  ย  ย  ย  ย  mainSpeed.curveMultiplier = fBulletStartSpeed;

ย  ย  ย  ย  }

ย  ย  ย  ย  else if(earlySpeedSet)

ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  mainSpeed = fBulletStartSpeed;

ย  ย  ย  ย  }


ย  ย  ย  ย  MainModule.startSpeed = mainSpeed;


ย  ย  ย  ย  MainModule.startLifetime = fLifeTime;

ย  ย  ย  ย  MainModule.simulationSpace = ParticleSystemSimulationSpace.World;ย  ย //์‹œ๋ฎฌ ์ŠคํŽ˜์ด์Šค


ย  ย  ย  ย  //Velocity over lifetime

ย  ย  ย  ย  var VOL = system.velocityOverLifetime;

ย  ย  ย  ย  if (EnableVOL)

ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  VOL.enabled = true;

ย  ย  ย  ย  ย  ย  var VeloLifeCurve = system.velocityOverLifetime.speedModifier;ย  //๋”ฐ๋กœ ๋นผ๋†“๊ณ 

ย  ย  ย  ย  ย  ย  VeloLifeCurve.curve = VeloOverTimeCurve;

ย  ย  ย  ย  ย  ย  VOL.speedModifier = VeloLifeCurve;ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  //๋‹ค์‹œ ๋„ฃ์–ด์ฃผ๊ธฐ

ย  ย  ย  ย  }

ย  ย  ย  ย  else

ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  VOL.enabled = false;

ย  ย  ย  ย  }

ย  ย  ย  ย  //Emit ํ•  ๋•Œ ์‚ฌ์šฉ๋  Param ์„ค์ • ํ•„์š”...

ย  ย  ย  ย  //ParticleSystem.EmitParams EmitParams = system.EmitParams;

ย  ย  ย  ย  //EmitParams


ย  ย  ย  ย  Moduleshape = system.shape;

ย  ย  ย  ย  Moduleshape.alignToDirection = true;ย  //ํŒŒํ‹ฐํด์ด ์ด๋™ ๋ฐฉํ–ฅ์„ ๋ฐ”๋ผ๋ด„.


ย  ย  ย  ย  //์ด๋ฏธ์…˜ ์„ค์ •

ย  ย  ย  ย  var Emition = system.emission;

ย  ย  ย  ย  Emition.enabled = false;


ย  ย  ย  ย  var collision = system.collision;

ย  ย  ย  ย  collision.enabled = true;

ย  ย  ย  ย  collision.type = ParticleSystemCollisionType.World;

ย  ย  ย  ย  collision.mode = ParticleSystemCollisionMode.Collision2D;

ย  ย  ย  ย  collision.bounce = 0f;

ย  ย  ย  ย  collision.maxKillSpeed = 20000;

ย  ย  ย  ย  collision.radiusScale = 0f;ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  //์ฝœ๋ฆฌ์ „์˜ ๋ฐ˜์ง€๋ฆ„์„ ์ค„์ด๊ณ  Trigger์˜ ๋ฐ˜์ง€๋ฆ„์€ 1f๋กœ ์œ ์ง€ํ•˜์—ฌ ์‹ค์งˆ์  ์ถฉ๋Œ์ฒ˜๋ฆฌ๋Š” ์—†๊ฒŒํ•˜๊ณ  Trigger์˜ ์ถฉ๋Œ์„ ํ†ตํ•˜์—ฌ ์ด์•Œ์˜ ์ œ๊ฑฐ๋ฅผ ์ง„ํ–‰.

ย  ย  ย  ย  collision.quality = ParticleSystemCollisionQuality.High;

ย  ย  ย  ย  //ํ”Œ๋ ˆ์ด์–ด ์ฝ”์–ด ๋ ˆ์ด์–ด์™€์˜ ์ถฉ๋Œ๋งŒ ์ฒ˜๋ฆฌํ•˜๋„๋ก.

ย  ย  ย  ย  //collision.collidesWith = 1 << LayerMask.NameToLayer("PlayerCore");ย  ย  //๋ ˆ์ด์–ด ๊ด€๋ฆฌ

ย  ย  ย  ย  collision.sendCollisionMessages = true;


ย  ย  ย  ย  var trigger = system.trigger;


ย  ย  ย  ย  //์ฝœ๋ผ์ด๋” ์ถ”๊ฐ€ ์˜์—ญ

ย  ย  ย  ย  //trigger.AddCollider(GameManager.PlayerHit().GetComponent<Collider2D>());


ย  ย  ย  ย  trigger.enabled = true;

ย  ย  ย  ย  //trigger.AddCollider() //Date์— ์ €์žฅ ํ˜น์€ Player์˜ ํŠธ๋ฆฌ๊ฑฐ ์ ์˜ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๋„ฃ์–ด ์ฒ˜๋ฆฌ... ๊ทผ๋ฐ ์ด๊ฑธ ๋Šฅ๋™์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉด์„œ ์ง„ํ–‰ํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์„๊นŒ?

ย  ย  ย  ย  trigger.AddCollider(TestCollider2D);

ย  ย  ย  ย  trigger.inside = ParticleSystemOverlapAction.Kill;ย  ย  ย  //๋‚ด๋ถ€

ย  ย  ย  ย  trigger.outside = ParticleSystemOverlapAction.Ignore;ย  ย //์™ธ๋ถ€

ย  ย  ย  ย  //์ฝœ๋ฐฑ์œผ๋กœ ํ˜ธ์ถœ.

ย  ย  ย  ย  trigger.enter = ParticleSystemOverlapAction.Callback;ย  ย //์ง„์ž…

ย  ย  ย  ย  trigger.exit = ParticleSystemOverlapAction.Ignore;ย  ย  ย  //ํ‡ด์žฅ




ย  ย  }


ย  ย  /// <summary>

ย  ย  /// ํŒŒํ‹ฐํด Trigger Callback ์ƒํ™ฉ์ผ ๋•Œ ํ˜ธ์ถœ

ย  ย  /// </summary>

ย  ย  private void OnParticleTrigger()

ย  ย  {

ย  ย  ย  ย  ParticleSystem ps = GetComponent<ParticleSystem>();

ย  ย  ย  ย  List<ParticleSystem.Particle> enter = new List<ParticleSystem.Particle>();

ย  ย  ย  ย  int numEnter = ps.GetTriggerParticles(ParticleSystemTriggerEventType.Enter, enter);

ย  ย  ย  ย  if (numEnter > 0)

ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  Debug.Log("Enter");

ย  ย  ย  ย  }

ย  ย  }


ย  ย  private void OnParticleCollision(GameObject other)

ย  ย  {


ย  ย  ย  ย  Debug.Log(other.gameObject);


ย  ย  }


}