โš™๏ธ ์—”์ง„/๐Ÿค ์œ ๋‹ˆํ‹ฐ

์—๋””ํ„ฐ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ์œผ๋กœ, editor๋ฅผ ์ƒ์†๋ฐ›๋Š”๋‹ค.์ฝ”๋“œ์—์„œ ์‚ฌ์šฉํ•˜๋Š” TopDownCamera ๋Š” ์ด์ „ ํฌ์ŠคํŠธ์— ๋‚˜์™€์žˆ๋‹ค.์› : ์บ๋ฆญํ„ฐ๋ฅผ ๊ธฐ์ค€์œผ๋กœ distance๋ฅผ ํ‘œ์‹œ์‚ฌ๊ฐํ˜•๋“ค : handle์˜ ์Šค์ผ€์ผ ์Šฌ๋ผ์ด๋”๋ฅผ ์‚ฌ์šฉํ•ด ๋งŒ๋“  ์Šฌ๋ผ์ด๋” ์ปจํŠธ๋กคusing UnityEditor;using UnityEngine;namespace FastCampus.Cameras{ [CustomEditor(typeof(TopDownCamera))] public class TopDownCamera_Editor : Editor { #region Variables private TopDownCamera targetCamera; #endregion #region Main..
๐ŸŒŸ mainCamera์— ๋ถ™๋Š” ์Šคํฌ๋ฆฝํŠธusing UnityEngine;namespace FastCampus.Cameras { public class TopDownCamera : Monobehaviour { #region Variable public Transform target; private Vector3 refVelocity; public float height = 5f; public float distance = 10f; public float angle = 45f; public float lookAtHeight = 2f; public float smoothSpe..
๐ŸŒŸ mixamocharacters ๐Ÿ‘‰ ybot ๊ฒ€์ƒ‰ ๐Ÿ‘‰ download ๐Ÿ‘‰ format : FBX for Unityanimations ๐Ÿ‘‰ idle, walk ๋“ฑ ๋‹ค์šด๋กœ๋“œwith skin : ์บ๋ฆญํ„ฐ ๋ชจ๋ธ๋„ ๊ฐ™์ดwithout skin : ์• ๋‹ˆ๋ฉ”์ด์…˜๋งŒ ๐ŸŸฉ ์บ๋ฆญํ„ฐ ๋ชจ๋ธRiganimation typehumanoid : 3d max์—์„œ ์‚ฌ๋žŒ ํ˜•ํƒœ์˜ ์บ๋ฆญํ„ฐ ๋ชจ๋ธ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ผˆ๋Œ€๋กœ ์„ค์ •๋˜์–ด ์žˆ๋Š” ๊ฒƒ๋“ค์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒgeneric : ์‚ฌ๋žŒ์˜ ํ˜•ํƒœ๊ฐ€ ์•„๋‹Œ ๊ฒƒ ๊ธฐ๋ณธ์ ์œผ๋กœ Animator๊ฐ€ ๋‹ฌ๋ ค์žˆ์Œ๊ธฐ๋ณธ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋žํ•ด์ฃผ๋ฉด controller์— ์ž๋™์œผ๋กœ ์‚ฝ์ž…๋œ๋‹ค. using UnityEngine;using UnityEngine.AI;namespace FastCampus.Characters { [R..
character controller๋„ ๊ฐ™์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.๐ŸŒŸ Navigation ํ™œ์„ฑํ™”ํ•˜๊ธฐ Agents์˜ ์†์„ฑ๊ฐ’๋“ค์„ character controller์˜ ๊ฐ’๋“ค๊ณผ ๋™์ผํ•˜๊ฒŒ ๋งž์ถฐ์ค€๋‹ค. ๊ธธ์ฐพ๊ธฐ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•  ๋ฉ”์‰ฌ ์„ ํƒnavigation ๐Ÿ‘‰ object ๐Ÿ‘‰ mesh renderersmesh๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ๋“ค์ด ์ •๋ ฌ๋œ๋‹ค.๋นŒ๋“œํ•  ์˜ค๋ธŒ์ ํŠธ๋“ค์„ ์„ ํƒoffMeshLinks : ์ ํ”„ ๋ฐ ์ˆœ๊ฐ„์ด๋™ ๋“ฑ ๋‹ค๋ฅธ ํ–‰๋™๋“ค์„ ์„ค์ •ํ•ด์ค„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒnavigation area : walkable = ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ์„ค์ • cf. not walkable = ์ด๋™ํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ terrains ์„ ํƒ ๐Ÿ‘‰ ํ•˜์ด์–ด๋ผํ‚ค์— ๊ธฐ์กด์— terrains ์ž‘์—…์„ ํ•œ ์˜ค๋ธŒ์ ํŠธ๋“ค์ด ์ •๋ ฌ๋จmesh renderers์™€ ๋™์ผํ•˜..
๐ŸŒŸ Rigidbody์™€์˜ ์ฐจ์ด์ slope limit : ์บ๋ฆญํ„ฐ๊ฐ€ ์˜ฌ๋ผ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์‚ฌ๋„step offset : ๊ณ„๋‹จ๊ณผ ๊ฐ™์ด ์บ๋ฆญํ„ฐ๊ฐ€ ์˜ฌ๋ผ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๋†’์ด๋ฌผ๋ฆฌ์—”์ง„์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ค‘๋ ฅ๊ณผ ์ด๋™์†๋„ ๊ฐ™์€ ๊ณ„์‚ฐ๋ฒ•์„ ์ง์ ‘์ ์œผ๋กœ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค. ์˜ค๋ธŒ์ ํŠธ ๊ตฌ์„ฑ ์˜ค๋ธŒ์ ํŠธ์— Character Controller ์ปดํฌ๋„ŒํŠธ ์ถ”๊ฐ€ ๋ฐ ์†์„ฑ ๋ณ€๊ฒฝโœจ Character Controllerskin width : ์บ๋ฆญํ„ฐ ์ปจํŠธ๋กค๋Ÿฌ์™€ ๋‹ค๋ฅธ ์ฝœ๋ผ์ด๋”๊ฐ€ ๋ถ€๋”ชํ˜”์„ ๋•Œ ๊ฒน์น  ์ˆ˜ ์žˆ๋Š” ๊ฐ’min move distance : ์บ๋ฆญํ„ฐ ์ด๋™ ์ตœ์†Ÿ๊ฐ’์•„๋ž˜์— ์žˆ๋Š” capsule y position ๊ฐ’๋„1๋กœ ๋ณ€๊ฒฝํ•ด์ค€๋‹ค. using System.Collections;using System.Collections.Generic;using UnityEngin..
๋นˆ ์˜ค๋ธŒ์ ํŠธ ์ƒ์„ฑ ๐Ÿ‘‰ ํ•˜์œ„์— Capsule ์‚ฝ์ž… ๐Ÿ‘‰ ํ•˜์œ„์— ๋ˆˆ ๋ถ™์—ฌ์ฃผ๊ธฐ๋นˆ ์˜ค๋ธŒ์ ํŠธ(์ดํ•˜ ๋ถ€๋ชจ ์˜ค๋ธŒ์ ํŠธ)์— Capsule Collider ์ปดํฌ๋„ŒํŠธ ์‚ฝ์ž…Capsule์— ์žˆ๋Š” Capsule Collider๋Š” ๋น„ํ™œ์„ฑํ™”/์‚ญ์ œ๋ถ€๋ชจ ์˜ค๋ธŒ์ ํŠธ์˜ collider์˜ ์ค‘์‹ฌ์„ (0,1,0)์œผ๋กœ ๋ณ€๊ฒฝํ•ด์ค€๋‹ค. ๐Ÿ‘‰ ์บ๋ฆญํ„ฐ์˜ ๋ฐœ๋์ด ํ•ญ์ƒ ์›์ ์„ ํ–ฅํ•˜๋„๋กcapusle์˜ transform-position๋„ ์ˆ˜์ •ํ•ด์ค€๋‹ค.๋ถ€๋ชจ ์˜ค๋ธŒ์ ํŠธ์— rigidbody ์ปดํฌ๋„ŒํŠธ ์ถ”๊ฐ€ โœจ Rigidbodymass : ์งˆ๋Ÿ‰ ๊ณ„์‚ฐ. ์ค‘๋ ฅ์—๋Š” ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์Œ. ๊ฐ™์€ rigidbody ์˜ค๋ธŒ์ ํŠธ๋ผ๋ฆฌ ์ถฉ๋Œํ•˜์˜€์„ ๋•Œ ๋ฐ˜์‘drag : ๊ณต๊ธฐ์ €ํ•ญ๊ฐ’. ๊ฐ’์ด ์ž‘์„์ˆ˜๋ก ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ๋ฌด๊ฑฐ์›Œ ๋ณด์ด๊ณ , ๊ฐ’์ด ํฌ๋ฉด ๊ฐ€๋ฒผ์›Œ ๋ณด์ธ๋‹ค. ํด์ˆ˜๋ก ์ค‘๋ ฅ์ด ๊ฐ€ํ•ด์ง€์ง€ ์•Š๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค.angu..
peewoong
'โš™๏ธ ์—”์ง„/๐Ÿค ์œ ๋‹ˆํ‹ฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก