๋ชฉ๋ก์ ์ฒด ๊ธ (1096)
KoreanFoodie's Study
ํจํค์ง ์๋ฐ์์๋ ํด๋์ค๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํด ํจํค์ง๋ฅผ ์ฌ์ฉํ๋ค. ํจํค์ง์ ๋ฌผ๋ฆฌ์ ์ธ ํํ๋ ํ์ผ ์์คํ ์ ํด๋์ด๋ค. ํจํค์ง๋ ๋จ์ํ ํ์ผ ์์คํ ์ ํด๋ ๊ธฐ๋ฅ๋ง ํ๋ ๊ฒ์ด ์๋๋ผ ํด๋์ค์ ์ผ๋ถ๋ถ์ด๋ค. ํจํค์ง๋ ํด๋์ค๋ฅผ ์ ์ผํ๊ฒ ๋ง๋ค์ด์ฃผ๋ ์๋ณ์ ์ญํ ์ ํ๋ค. ํจํค์ง๋ ํด๋์ค๋ฅผ ์ ์ผํ๊ฒ ๋ง๋ค์ด์ฃผ๋ ์๋ณ์ ์ญํ ์ ํ๋ค. ํด๋์ค ์ด๋ฆ์ด ๋์ผํ๋๋ผ๋ ํจํค์ง๊ฐ ๋ค๋ฅด๋ฉด ๋ค๋ฅธ ํด๋์ค๋ก ์ธ์ํ๋ค. ํด๋์ค์ ์ ์ฒด ์ด๋ฆ์ "ํจํค์ง๋ช +ํด๋์ค๋ช "์ธ๋ฐ, ํจํค์ง๊ฐ ์/ํ์๋ก ๊ตฌ๋ถ๋์ด ์๋ค๋ฉด ๋ํธ(.)๋ฅผ ์ด์ฉํด ํํํ๋ค. ์์ํจํค์ง.ํ์ํจํค์ง.ํด๋์ค ํด๋์ค๋ฅผ ์ด๋์ํฌ ๋๋ ํจํค์ง ์ ์ฒด๋ฅผ ์ด๋์์ผ์ผ ํ๋ค. ์ฆ, myPackage ๋ด์ myClass๋ฅผ yourPackage๋ก ์ฎ๊ธด๋ค๋ฉด, ํด๋น ํด๋์ค๋ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค! ํจํค์ง ..
์ ์ (static) ์ ์ ๋ฉค๋ฒ๋ ํด๋์ค์ ๊ณ ์ ๋ ๋ฉค๋ฒ๋ก์ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ง ์๊ณ ์ฌ์ฉํ ์ ์๋ ํ๋์ ๋ฉ์๋๋ฅผ ๋งํ๋ค. ํด๋์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ก ๋ก๋ฉ๋๋ฉด ์ ์ ๋ฉค๋ฒ๋ฅผ ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋๋ฐ, ํด๋์ค ์ด๋ฆ๊ณผ ํจ๊ป ๋ํธ(.) ์ฐ์ฐ์๋ก ์ ๊ทผํ๋ค. int a = myClass.value; myClass.doSomething(a); ์ ์ ์ด๊ธฐํ ๋ธ๋ก ์ ์ ํ๋๋ ๋ค์๊ณผ ๊ฐ์ด ํ๋ ์ ์ธ๊ณผ ๋์์ ์ด๊ธฐ๊ฐ์ ์ฃผ๋ ๊ฒ์ด ๋ณดํต์ด๋ค. ๊ทธ๋ฌ๋ ๊ณ์ฐ์ด ํ์ํ ์ด๊ธฐํ ์์ ์ ๊ฒฝ์ฐ, ์ ์ ๋ธ๋ก(static block)์ ์ฌ์ฉํ ์ ์๋ค. static { ... } ์ ์ ๋ธ๋ก์ ํด๋์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ก ๋ก๋ฉ๋ ๋ ์๋์ ์ผ๋ก ์คํ๋๋ค. ์ ์ ๋ธ๋ก์ ํด๋์ค ๋ด๋ถ์ ์ฌ๋ฌ ๊ฐ๊ฐ ์ ์ธ๋์ด๋ ์๊ด์๊ณ , ์ ์ธ๋ ์์๋๋ก ์คํ๋๋ค. public class TV..
๋ฐ์ดํฐ ํ์ ๋ฐ์ดํฐ ํ์ ์ primitive type๊ณผ reference type(์ฐธ์กฐ ํ์ )์ผ๋ก ๋๋๋ค. ์ฐธ์กฐ ํ์ ์ด๋ ๊ฐ์ฒด์ ๋ฒ์ง๋ฅผ ์ฐธ์กฐํ๋ ํ์ ์ผ๋ก, ๋ฐฐ์ด, ์ด๊ฑฐ, ํด๋์ค, ์ธํฐํ์ด์ค ํ์ ์ด ์ด์ ํด๋น๋๋ค. ์๋ฐ๋ ๋ฐฐ์ด์ ์ฃผ์๋ฅผ ์คํ ์์ญ์, ์ค์ ๋ฐ์ดํฐ ๊ฐ์ ํ ์์ญ์ ํ ๋นํ๋ค. ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ ์์ญ JVM์ ์ด์์ฒด์ ์์ ํ ๋น๋ฐ์ ๋ฉ๋ชจ๋ฆฌ ์์ญ(Runtime Data Area)๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ๋ถํด์ ์ฌ์ฉํ๋ค. 1. ๋ฉ์๋ ์์ญ : ์ฝ๋์์ ์ฌ์ฉ๋๋ ํด๋์ค(~.class)๋ค์ ํด๋์ค ๋ก๋๋ก ์ฝ์ด ํด๋์ค๋ณ๋ก ๋ฐํ์ ์์ํ(runtime constant pool), ํ๋(fiedl) ๋ฐ์ดํฐ, ๋ฉ์๋(method) ๋ฐ์ดํฐ, ๋ฉ์๋ ์ฝ๋, ์์ฑ์(constructor) ์ฝ๋ ๋ฑ์ ๋ถ๋ฅํด์ ์ ์ฅํ๋ค. ๋ฉ์๋ ์..
๋ฒกํฐ ๋ฒกํฐ๋ ๋ฐฉํฅ๊ณผ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋ค. ๋ฒกํฐ (1, 0, 2)์ด ์์๋, ํด๋น ๋ฒกํฐ์ ํฌ๊ธฐ๋ sqrt(1^2 + 2^2)์ด ๋๋ค. ์ ๋ํฐ๋ Vector2, Vector3, Vector4 ํ์ ์ ์ง์ํ๋ค. ์๋ก์ด ๋ฒกํฐ๋ฅผ ๋ง๋ค ๋๋ ์์ฑ์๋ฅผ ํธ์ถํ๋ฉด ๋๋ค. // Vector๋ ํด๋์ค๊ฐ ์๋๋ผ ๊ตฌ์กฐ์ฒด์ด๋ค! public struct Vector3 { public float x; public float y; public float z; // Vector3 ๋ด๋ถ ์ฝ๋ } Vector3 a = new Vector3(0, 0, 0); Vector3 b = a; b.x = 100; ๋ฒกํฐ์ ์ฐ์ฐ ๋ด์ ๊ณผ ์ธ์ ์ ์๋ฏธ๋ฅผ ์ดํดํ๋ ๊ฒ์ด ์ค์ํ๋ค. ๋ฐฑํฐ์ ๋ด์ ์ Dot Product๋ผ๊ณ ํ๋๋ฐ, a ยท b ๋ผ๊ณ ํ๋ฉด, ๋ฒกํฐ b๋ฅผ a์..
๋ฐ๋ฅ ํ์ Rotate( ) ๋ฉ์๋๋ฅผ ์ด์ฉํด์ ๋ฌผ์ฒด๋ฅผ ํ์ ์ํฌ ์ ์๋ค. public class Rotator : MonoBehaviour { public float rotationSpeed = 60f; // Update is called once per frame void Update() { transform.Rotate(0f, rotationSpeed * Time.deltaTime, 0f); } } ์์์ rotationSpeed์ Time.deltaTime์ ๊ณฑํฉ์ผ๋ก์จ, ์ด๋ค ๊ธฐ๊ธฐ์์๋ ์์ ์ ์ผ๋ก 1์ด๋ง๋ค rotationSpeed๋งํผ์ ๊ฐ๋์ ํ์ ์ ์ค ์ ์๋ค. Update( ) ๋ 1ํ๋ ์๋ง๋ค ์คํ๋๋ฉฐ, Time.deltaTime์ ( 1 / ์ด๋น ํ๋ ์ ์)์ด๋ฏ๋ก, ํ๋ ์์ด 60์ด๋ 120์ด๋ ..
ํ๋ฆฌํน ๊ฒ์ ์ค๋ธํ ํธ๋ ํ๋ฆฌํน์ผ๋ก ๋ง๋ค์ด ์ฌํ์ฉํ ์ ์๋ค. ๋ง์น, ์นผ์ ์ฐ์ด๋ด๋ ์ฃผ๋ฌผ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค! ์ฌ์ฉ๋ฒ์ ๊ฐ๋จํ๋ค. Hierarchy์ ์๋ ์ค๋ธ์ ํธ๋ฅผ ํ๋ก์ ํธ ์ฐฝ์ ๋๋๊ทธ&๋๋ ํด์ฃผ๊ธฐ๋ง ํ๋ฉด ๋๋ค! Use Gravity ๋ฆฌ์ง๋ ๋ฐ๋ ์ปดํฌ๋ํธ์ Use Gravity ํ๋๋ฅผ ํด์ ํ๋ฉด ์ค๋ ฅ์ ์ํฅ์ ๋ฐ์ง ์๋๋ค. transform ๋ณ์ transform์ ์คํฌ๋ฆฝํธ์์ ์์ ์ ํธ๋์คํผ ์ปดํฌ๋ํธ๋ก ๋ฐ๋ก ์ ๊ทผํ๋ ์ง๋ฆ๊ธธ์ด๋ค! Destroy( ) void Start() { // ์ด๋์ ์ฌ์ฉํ ๋ฆฌ์ง๋๋ฐ๋ ์ปดํฌ๋ํธ ํ ๋น bulletRigidbody = GetComponent(); // ๋ฆฌ์ง๋๋ฐ๋์ ์๋ = ์์ชฝ ๋ฐฉํฅ * ์ด๋ ์๋ ฅ bulletRigidbody.velocity = transform.forwa..
๋จธํฐ๋ฆฌ์ผ ๊ฒ์ ์ค๋ธ์ ํธ์ ์ปฌ๋ฌ๋ ๋จธํฐ๋ฆฌ์ผ(Material)์ด ๊ฒฐ์ ํ๋ค. ๋จธํฐ๋ฆฌ์ผ์ ์ ฐ์ด๋์ ํ ์ค์ณ๊ฐ ํฉ์ณ์ง ์์ ์ผ๋ก, ์ค๋ธ์ ํธ์ ํฝ์ ์ปฌ๋ฌ๋ฅผ ๊ฒฐ์ ํ๋ค ์ ฐ์ด๋๋ ์ฃผ์ด์ง ์ ๋ ฅ์ ๋ฐ๋ผ ํฝ์ ์ ์ต์ข ์ปฌ๋ฌ๋ฅผ ๊ฒฐ์ ํ๋ ์ฝ๋์ด๋ค. ์ ฐ์ด๋๋ ์ง๊ฐ๊ณผ ๋น์ ์ํ ๋ฐ์ฌ์ ๊ตด์ ๋ฑ์ ํจ๊ณผ๋ฅผ ๋ง๋ ๋ค. ํ ์ค์ฒ๋ ํ๋ฉด์ ์ ํ๋ ์ด๋ฏธ์ง ํ์ผ์ด๋ค. ์ ฐ์ด๋๋ ๋ฌผ๊ฐ์ผ๋ก, ํ ์ค์ฒ๋ ์ค์ผ์น๋ ๋ฐ๊ทธ๋ฆผ์ผ๋ก ์ดํดํ๋ฉด ๋๋ค. ๋ฐ๊ทธ๋ฆผ์ด ๊ฐ์๋ ๋ฌผ๊ฐ์ ์ข ๋ฅ์ ๋ฐ๋ผ ํํ์ด ๋ฌ๋ผ์ง๋ค! ์ด ์ค ์๋ฒ ๋(Albedo)๋ ๋ฐ์ฌ์จ์ด๋ผ๋ ๋ป์ผ๋ก, ๋ฌผ์ฒด๊ฐ ์ด๋ค ์์ ๋ฐ์ฌํ ์ง๋ฅผ ๊ฒฐ์ ํ๋ค! C# ์คํฌ๋ฆฝํธ ์ด์ ๊ธฐ์ด์ ์ธ ์ฝ๋๋ค์ ์ดํด๋ณด์. void FixedUpdate() { if (Input.GetKey(KeyCode.UpArrow) == true) { playerRig..
๋ชฉํ : ์ฌ์ ํ๋ธ๋ฅผ ํ๋ ๋ง๋ค๊ณ , ์ฝ๋๋ก ํด๋น ํ๋ธ๊ฐ ์ ํํ๊ฒ ๋ง๋ค์ด ๋ณด์! 1. Hierarchy ํญ์์ 3D Object ํ๋ธ๋ฅผ ํ๋ ์์ฑํ๊ธฐ 2. ๋ณ์๋ก ๋ฆฌ์ง๋ ๋ฐ๋ ์ปดํฌ๋ํธ ์ฌ์ฉํ๊ธฐ (Inspector -> Add Component) 3. ํ๋ก์ ํธ ์ฐฝ์์ Create > C# Script ํด๋ฆญ, ์ด๋ฆ์ Jumper๋ก ๋ณ๊ฒฝํ ํ ์ด๊ธฐ! C#์์๋ ์ด๊ธฐ ํ์ผ ์ด๋ฆ๊ณผ ๋์ผํ ํด๋์ค๊ฐ ์์ฑ๋๋ฏ๋ก, ์ด๋ฆ์ ์ ๋ง์ถ์ด ์ฃผ์ด์ผ ํ๋ค. using System.Collections; using System.Collections.Generic; using UnityEngine; public class Jumper : MonoBehaviour { public Rigidbody myRigidbody; // Start..
์์? ๊ฐ์ฒด ์งํฅ์ธ์ด์์ ์์์ ์ฌ์ฉํ๋ฉด ๊ธฐ์กด์ ๋ง๋ค์ด๋์ ํ ํ๋ฆฟ์ ํ์ฅ/์์ ํจ์ผ๋ก์จ ๋น์ทํ ํ ํ๋ฆฟ์ ๋ง๋ค ์ ์๋ค. (์์์ ๋ํด ์ ๋ชจ๋ฅธ๋ค๋ฉด ์ฌ๊ธฐ๋ฅผ) ๊ทธ๋ฐ๋ฐ ์๋ฅผ ๋ค์ด, "HUMAN"์ด๋ผ๋ ํด๋์ค๋ฅผ ๋ง๋ค์๋ค๊ณ ํ์. ๋ง์ฝ ์ด ํด๋์ค๋ฅผ ํ์ฅ์์ผ ํ๋ ์ด์ด, NPC, ์ฌ์ง์ด ๋ชฌ์คํฐ๊น์ง ๋ง๋ ๋ค๋ฉด ์ด๋จ๊น? ๊ฐ๊ฐ์ ์ค๋ธ์ ํธ๋ ์ฑ๊ฒฉ์ด ๋งค์ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์คํ๋ ค ์์์ ํตํ ์์ ์ด ํจ์จ์ ๋จ์ด๋จ๋ฆด ์ ์๋ค. ๋ฐ๋ผ์, ์ปดํฌ๋ํธ ํจํด์ ์์์ผ ํ๋ค. ์ปดํฌ๋ํธ ํจํด ๊ธฐํ์๋ ๊ฒ์์ ๋ฑ์ฅํ ๋ชจ๋ ๋๋ฌผ์ ์ฌ์ ์ ๊ธฐํํ ์ ์๋ค. ์ฆ, ๋ถํ๋ง๋ค ๋ํ ๊ธฐ๋ฅ์ ๋ถ์ฌํ๊ณ , ์ฌ๋ฌ ๋ถํ์ ๊ฒ์ ์ค๋ธ์ ํธ์ ์กฐํฉํ๋ ๋ฐฉ์์ด ํจ์จ์ ์ด๋ค! 1. ์ปดํฌ๋ํธ๋ฅผ ๋ฏธ๋ฆฌ ์ฌ๋ฌ ๊ฐ ๋ง๋ค๊ธฐ 2. ๋น ๊ฒ์ ์ค๋ธ์ ํธ ์์ฑํ๊ธฐ 3. ์ฝ๋ฟ์ ๊ฒ์ ์ค๋ธ์ ํธ ์์ฑํ..
์ด๋ฒ ๊ธ์์๋ ์ ๋ํฐ์ ๋๋ต์ ์ธ ์ธํฐํ์ด์ค๋ฅผ ์๊ฐํ๋ค. ์ธ์คํํฐ ์ฐฝ ์ธ์คํํฐ ์ฐฝ์๋ ๋ค์๊ณผ ๊ฐ์ ์ปดํฌ๋ํธ๊ฐ ์ถ๊ฐ๋์ด ์๋ค. (๊ธฐ๋ณธ Cube ๊ฒ์ ์ค๋ธ์ ํธ๋ก ์ค๋ช ) ํธ๋์คํผ(Transform) : ์ค๋ธ์ ํธ์ 3์ฐจ์ ์ขํ์ ํฌ๊ธฐ, ํ์ ์ ์ง์ ํ๋ค ๋ฉ์ ํํฐ(Mesh Filter) : 3D ๋ฉ์ ํ์ผ์ ๋ฐ์ ์ค๋ธ์ ํธ์ ์ธ๊ณฝ์ ์ ์ง์ ํ๋ค ๋ฉ์ ๋ ๋๋ฌ(Mesh Renderer) : ๋ฉ์๋ฅผ ๋ฐ๋ผ ์์ ์ฑ์ ๊ทธ๋ํฝ ์ธํ์ ๊ทธ๋ฆฐ๋ค ๋ฐ์ค ์ฝ๋ผ์ด๋(Box Collider) : ๋ค๋ฅธ ๋ฌผ์ฒด๊ฐ ๋ถ๋ช์น ์ ์๋ ๋ฌผ๋ฆฌ์ ์ธ ํ๋ฉด์ ๋ง๋ ๋ค ์ฝ์์ฐฝ ์ฝ์ ์ฐฝ์์๋ ์ฌ์ฉ์๊ฐ ๋ก๊ทธ๋ฅผ ๋์ ํ ์คํ ์ ์งํํ ์ ์๋ค. Clear : ๋ก๊ทธ ์ง์ฐ๊ธฐ Collapse : ๊ฐ์ ๋ด์ฉ์ ๋ก๊ทธ๋ผ๋ฆฌ ๋ฌถ๊ธฐ Clear on Play : ์ฌ์ ํ๋ ์ดํ๊ธฐ ์ง์ ๊น์ง ..