πŸ“ Game

    [Unreal] μ½œλ¦¬μ „

    [Unreal] μ½œλ¦¬μ „

    1. μ½œλ¦¬μ „ λ°˜μ‘ 1) 객체 λ°˜μ‘ μ§€μš°κ°œλ₯Ό 벽으둜 λ˜μ§„λ‹€λ©΄ μ§€μš°κ°œλŠ” λ²½κ³Ό μΆ©λŒν•΄μ„œ νŠ•κ²¨ λ‚˜μ˜¨λ‹€. 그런데 κ²Œμž„ μ„Έκ³„μ—μ„œλŠ” λͺ¨λ“  물체가 μ΄λŸ¬ν•œ ν”„λ‘œνΌν‹°λ₯Ό 가지면 μ•ˆ λœλ‹€. μ™œλƒν•˜λ©΄ 물체와 μ„œλ‘œ μΆ©λŒν•˜μ§€ μ•Šμ„ μˆ˜λ„ 있고 λ‹€μ–‘ν•œ κ²½μš°κ°€ μ‘΄μž¬ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€. 이처럼 κ²Œμž„ κ°œλ°œμ—μ„œλŠ” 물체가 μΆ©λŒν•  λ•Œ μ–΄λ–»κ²Œ λ°˜μ‘ν•  것인지λ₯Ό μ„€μ •ν•΄μ•Ό ν•œλ‹€. μ–Έλ¦¬μ–Όμ—μ„œλŠ” μ΄λŸ¬ν•œ 섀정을 객체 λ°˜μ‘μ΄λΌ λΆ€λ₯΄λ©° 3가지 μ’…λ₯˜κ°€ μžˆλ‹€. 블둝(Block) μ„œλ‘œκ°€ μ„œλ‘œλ₯Ό νŒŒκ³ λ“€μ§€ μ•Šκ²Œ ν•œλ‹€. 두 λŒ€μƒμ΄ μ„œλ‘œ λŒ€ν•˜λŠ” 방식이 λͺ¨λ‘ 블둝이어야 ν•œλ‹€. μ˜€λ²„λž©(Overlap) μ½œλΌμ΄λ”λΌλ¦¬μ˜ 쀑볡을 ν—ˆμš©ν•˜μ§€λ§Œ μƒνƒœλ₯Ό κ²€μΆœν•΄μ„œ ν™œμš©ν•  수 있게 ν•œλ‹€. 두 λŒ€μƒμ΄ μ„œλ‘œ λŒ€ν•˜λŠ” 방식이 λͺ¨λ‘ μ˜€λ²„λž©μ΄μ–΄μ•Ό ν•œλ‹€. λ¬΄μ‹œ(Ignore) μ„œλ‘œλ₯Ό μ™„μ „νžˆ λ¬΄μ‹œν•œλ‹€. 블둝과 μ˜€λ²„..

    [Unreal] λΈ”λ£¨ν”„λ¦°νŠΈ

    [Unreal] λΈ”λ£¨ν”„λ¦°νŠΈ

    1. λΈ”λ£¨ν”„λ¦°νŠΈμ™€ C++언리얼 μ—”μ§„μ—μ„œ κ²Œμž„ κΈ°λŠ₯을 λ§Œλ“œλŠ” 방법은 λΈ”λ£¨ν”„λ¦°νŠΈμ™€ C++이 μžˆλ‹€.λΈ”λ£¨ν”„λ¦°νŠΈλŠ” λˆˆμ— λ³΄μ΄λŠ” λ…Έλ“œμ™€ λ…Έλ“œλ₯Ό 보며 λˆˆμ— λ³΄μ΄λŠ” 흐름을 λ§Œλ“€μ–΄λ‚΄λŠ” λΉ„μ£Όμ–Ό μŠ€ν¬λ¦½νŠΈμ΄λ‹€.C++은 ν”„λ‘œκ·Έλž˜λ¨Έκ°€ 직접 νƒ€μ΄ν•‘μœΌλ‘œ μ½”λ“œλ₯Ό μž‘μ„±ν•΄μ„œ ν”„λ‘œκ·Έλž˜λ°μ„ ν•˜λŠ” 방법이닀. λΈ”λ£¨ν”„λ¦°νŠΈλ₯Ό λ‹¨λ…μœΌλ‘œ μ‚¬μš©ν•˜μ—¬ κ²Œμž„μ„ λ§Œλ“œλŠ” 것도 κ°€λŠ₯ν•˜μ§€λ§Œ, ν”„λ‘œκ·Έλž˜λ¨Έκ°€ C++둜 λ² μ΄μŠ€κ°€ λ˜λŠ” κ²Œμž„ κΈ°λŠ₯을 λ§Œλ“€κ³ , λ””μžμ΄λ„ˆκ°€ λΈ”λ£¨ν”„λ¦°νŠΈλ₯Ό μ‚¬μš©ν•˜μ—¬ κ²Œμž„μ˜ 재미λ₯Ό μœ„ν•œ κΈ°λŠ₯듀을 μ œμž‘ν•˜λŠ” λ°©λ²•μœΌλ‘œ ν•¨κ»˜ μ‚¬μš©ν•  λ•Œ μ‹œλ„ˆμ§€λ₯Ό λ‚Έλ‹€. 1) λΉ„μ£Όμ–Ό μ–Έμ–΄λΈ”λ£¨ν”„λ¦°νŠΈλŠ” λΉ„μ£Όμ–Ό ν”„λ‘œκ·Έλž˜λ° 언어이닀. λΉ„μ£Όμ–Ό ν”„λ‘œκ·Έλž˜λ°μ€ μ‹œκ°μ μœΌλ‘œ 블둝을 μŒ“μœΌλ©° ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“€ 수 있게 ν•΄μ£ΌλŠ” ν”„λ‘œκ·Έλž˜λ° 언어이닀.  2) μ’…λ₯˜λ ˆλ²¨ λΈ”λ£¨ν”„λ¦°νŠΈ: λ ˆλ²¨μ— ν•˜λ‚˜μ”© ν• λ‹Ήλ˜μ–΄ μžˆλŠ”..

    [Unreal] 레벨, λ ˆμ΄μ–΄

    [Unreal] 레벨, λ ˆμ΄μ–΄

    1. 레벨 κ²Œμž„μ„ ν”Œλ ˆμ΄ν•  λ•Œ 보고 만질 수 μžˆλŠ” λͺ¨λ“  μ˜€λΈŒμ νŠΈλŠ” 레벨 속에 λ“€μ–΄κ°€ μžˆλ‹€. 즉, λ ˆλ²¨μ΄λž€ μŠ€νƒœν‹± λ©”μ‹œ, λ³Όλ₯¨, 라이트, λΈ”λ£¨ν”„λ¦°νŠΈ λ“±μœΌλ‘œ 이루어진 κ²ƒμœΌλ‘œ, 이 λͺ¨λ“  것이 μ–΄μš°λŸ¬μ Έμ„œ κ²Œμž„μ„ ν”Œλ ˆμ΄ν•˜λŠ” ν”Œλ ˆμ΄μ–΄μ—κ²Œ λͺ¨λ“  κ²½ν—˜μ„ 선사해 μ€€λ‹€. 레벨 규λͺ¨λŠ” κ±°λŒ€ 지ν–₯ 기반 μ›”λ“œμ—μ„œλΆ€ν„° μ•‘ν„° λͺ‡ 개둜 이루어진 맀우 μž‘μ€ λ ˆλ²¨κΉŒμ§€ λ‹€μ–‘ν•˜λ‹€. 1) 레벨 슀트리밍 μ–Έλ¦¬μ–Όμ—λŠ” κ²Œμž„ ν”Œλ ˆμ΄ 쀑에 아직 읽어 듀이지 μ•Šμ€ μ„œλΈŒ λ ˆλ²¨μ„ 이후에 μ°¨κ·Όμ°¨κ·Ό 읽어 λ“€μ΄λŠ” 레벨 μŠ€νŠΈλ¦¬λ°μ΄λΌλŠ” κΈ°λŠ₯이 μžˆλ‹€. λ”°λΌμ„œ 넓은 맡을 μ„œλΈŒ 레벨둜 λΆ„ν• ν•΄μ„œ μ‘°κΈˆμ”© 읽어 듀이며 κ²Œμž„ ν”Œλ ˆμ΄λ₯Ό μ§„ν–‰ν•˜λŠ” 것이 κ°€λŠ₯ν•˜λ‹€. 일반적인 κ²Œμž„μ—μ„œ μ˜₯상에 μ—„μ²­ 느리게 μ˜¬λΌκ°€κ±°λ‚˜ 열리지 μ•ŠλŠ” μ…”ν„°λ₯Ό λ³Έ 적이 μžˆμ„ 것이닀. λͺ¨λ‘ λ‘œλ“œλ₯Ό μœ„ν•œ μ‹œκ°„μ„ 버..

    [Unreal] μœ λ‹ˆν‹° 개발자λ₯Ό μœ„ν•œ 언리얼 엔진

    [Unreal] μœ λ‹ˆν‹° 개발자λ₯Ό μœ„ν•œ 언리얼 엔진

    μœ λ‹ˆν‹° 개발자λ₯Ό μœ„ν•œ 언리얼 엔진 κ²Œμž„ κ°œλ°œμ€ 자체 엔진을 μ‚¬μš©ν•˜κΈ°λ„ ν•˜μ§€λ§Œ λŒ€λΆ€λΆ„ μœ λ‹ˆν‹° ν˜Ήμ€ 언리얼 엔진을 μ„ νƒν•˜κ³  μžˆλ‹€. 두 엔진이 ν™œμš©λ˜λŠ” μ΄μœ λŠ” μ‘°κΈˆμ”© λ‹€λ₯΄λ‹€. μœ λ‹ˆν‹°λŠ” μ‰½κ²Œ 배울 수 μžˆλ‹€λŠ” 강점이 μžˆλ‹€. 엔진 μ‚¬μš©λ²•μ΄ κ°„νŽΈν•˜κ³  직관적이라 κ°„λ‹¨ν•œ ν”„λ‘œκ·Έλž˜λ° μ§€μ‹μœΌλ‘œ μ›¬λ§Œν•œ κ²Œμž„μ„ κ°œλ°œν•˜λŠ”λ° λ¬Έμ œκ°€ μ—†λ‹€. μ΄λŸ¬ν•œ μž₯점으둜 μœ λ‹ˆν‹°λ₯Ό μ‚¬μš©ν•˜λŠ” 개발자의 λΉ„μœ¨μ΄ κΎΈμ€€νžˆ μ¦κ°€ν•˜κ³  μžˆλ‹€. λ˜ν•œ μ™ΈλΆ€μ—μ„œ μ œμž‘ν•œ λ¦¬μ†ŒμŠ€ 적용이 빨라 개발 기간을 쀄일 수 μžˆλ‹€. μ–Έλ¦¬μ–Όμ˜ 강점은 κ·Έλž˜ν”½ 퀄리티이닀. κ·Έλ™μ•ˆ κ·Έλž˜ν”½ μ„±λŠ₯을 λ°”νƒ•μœΌλ‘œ 온라인, μ½˜μ†” κ²Œμž„μ—μ„œ 주둜 μ‚¬μš©λλ‹€. ν•˜μ§€λ§Œ νœ΄λŒ€κΈ°κΈ°μ˜ λ°œμ „μœΌλ‘œ 퀄리티가 ν–₯μƒλ˜μ–΄ λͺ¨λ°”일 κ²Œμž„ μ‹œμž₯μ—μ„œλ„ 두각을 λ“œλŸ¬λ‚΄κΈ° μ‹œμž‘ν–ˆλ‹€. λ˜ν•œ 리얼 νƒ€μž„ λ Œλ”λ§ κΈ°λŠ₯으둜 λ›°μ–΄λ‚œ νš¨μœ¨μ„ μžλž‘ν•œλ‹€..

    [Unity] μ½”λ“œ λ‚΄ νž™ λ©”λͺ¨λ¦¬ μ΅œμ ν™”

    μ½”λ“œ λ‚΄ νž™ λ©”λͺ¨λ¦¬ μ΅œμ ν™” ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“€ λ•Œ νž™ λ©”λͺ¨λ¦¬ μ˜μ—­μ€ ν”„λ‘œκ·Έλž˜λ¨Έκ°€ 항상 μ‹ κ²½ 써야 λ˜λŠ” μ€‘μš”ν•œ λ©”λͺ¨λ¦¬ μ˜μ—­μ΄λ‹€. μœ λ‹ˆν‹°μ—μ„œ νž™ λ³€μˆ˜κ°€ 생성될 λ•Œ μ—¬μœ  λ©”λͺ¨λ¦¬κ°€ μΆ©λΆ„ν•˜μ§€ μ•Šλ‹€λ©΄ GC을 μˆ˜ν–‰ν•œλ‹€. ν•˜μ§€λ§Œ GC은 κ½€λ‚˜ 무거운 μž‘μ—…μ΄κΈ° λ•Œλ¬Έμ— 이 μˆœκ°„ ν”„λ ˆμž„ λ“œλ‘­μ΄ λ°œμƒν•œλ‹€. 이λ₯Ό κ°œμ„ ν•˜κΈ° μœ„ν•΄ μ΅œκ·Όμ—λŠ” Inscremental GC κΈ°λŠ₯이 μ—…λ°μ΄νŠΈλ˜κΈ΄ ν•˜μ˜€μ§€λ§Œ, κ·Έλž˜λ„ GC의 λŒ€μƒμ΄ λ˜λŠ” νž™ 할당을 μ΅œλŒ€ν•œ λ§Œλ“€μ§€ μ•ŠλŠ” 것이 μ’‹λ‹€. 1) 자주 μ‚¬μš©λ˜λŠ” μ°Έμ‘° λ³€μˆ˜λŠ” μΊμ‹±ν•˜κΈ° private Button btn; void Start() { btn = GetComponent(); } public void MyMethod() { //Button btn = GetComponent(); // ν•¨μˆ˜ ν˜ΈμΆœμ‹œ λ§ˆλ‹€ νž™ ..

    [Unity] Mathf.Lerp() ν•¨μˆ˜

    [Unity] Mathf.Lerp() ν•¨μˆ˜

    Lerp 1. κ°œλ… μ„ ν˜• 보간(Linear Interpolation)은 두 점(a, b) μ‚¬μ΄μ˜ κ°’(c)을 κ΅¬ν•˜κΈ° μœ„ν•΄ 두 점을 μ—°κ²°ν•œ 직선을 λ§Œλ“€μ–΄ 사이 κ°’(t)을 κ³„μ‚°ν•˜λŠ” 방법이닀. Mathf.Lerp(float a, float b, float t) μ—¬κΈ°μ„œ tλŠ” percet(0 ~ 1)의 κ°œλ…μ΄κΈ° λ•Œλ¬Έμ— t = 0이면 a, t = 1이면 b와 κ°™λ‹€. 2. μœ λ‹ˆν‹° ν™œμš© 1) λΆ€λ“œλŸ¬μš΄ μ›€μ§μž„ λΆ€λ“œλŸ¬μš΄ μ›€μ§μž„μ„ ν‘œν˜„ν•˜κΈ° μœ„ν•΄ Update()μ—μ„œ 두 점 μ‚¬μ΄μ˜ ꡬ간을 μ§€μ†μ μœΌλ‘œ μ΄λ™μ‹œμΌœ ν™œμš©ν•  수 μžˆλ‹€. Update() ν•¨μˆ˜κ°€ ν˜ΈμΆœλ˜λŠ” 맀 ν”„λ ˆμž„λ§ˆλ‹€ μœ„μΉ˜λŠ” 계속 움직일 것이고 λͺ©ν‘œ 지점에 κ·Όμ ‘ν• μˆ˜λ‘ λ”μš± λΆ€λ“œλŸ¬μš΄ μ›€μ§μž„μ„ λ‚˜νƒ€λ‚΄κ²Œ λœλ‹€. void Update() { a = Mathf.Lerp(a, b, 0...