[6].1 μ΄μ λ°μ¬ μ μ [6].2 μ μ΄λ & μΆ©λ [6].3 μ μλ μμ± [6].4 μ μΈκ³΅μ§λ₯ |
[6].1 μ΄μ λ°μ¬ μ μ
πΆ PlayerFire μ€ν¬λ¦½νΈ μμ± λ° ν λΉ
- Project μ°½μ PlayerFire λΌλ μ΄λ¦μΌλ‘ C# μ€ν¬λ¦½νΈλ₯Ό νλ λ§λ λ€.
- Player κ°μ²΄μ λλκ·Έ μ€ λλ‘μΌλ‘ λΆμ¬ μ€λ€.
πΆ μ΄μ λ°μ¬ λ‘μ§
- μ΄μ λ°©μμ λ₯Ό λΉκΈ°λ©΄ μ΄μ 곡μ₯μ μ νλ₯Ό νμ¬ μμ°λ μ΄μμ λ°μ λ°μ¬ νλ νλ¦μΌλ‘ μ΄ν΄ ν μ μμΌλ©° μ΄λ μ΄μ νμ μ΄μ΄ λ©λͺ¨λ¦¬μ μ¬λ¦¬λ νλ¦κ³Ό κ°λ€.
- μ΄ νλ¦μ μ²λ¦¬ν΄ μ£Όλ ν¨μκ° Instantiate ν¨μ.
πΆ νμ μμ± μΆκ°
- μ΄μμ μμ±νκΈ° μν΄ μ΄μ 곡μ₯μ΄ νμνλ€.
- λ§λ€μ΄μ§ μ΄μμ λ°μ¬νκΈ° μν μμΉκ° νμνλ©° μ΄λ μ΄κ΅¬λ‘ μμ±μΌλ‘ λ±λ‘νλ€.
π₯οΈ PlayerFire.cs νμμμ± μ€μ
public class PlayerFire : MonoBehaviour
{
//μ΄μ μμ°ν 곡μ₯
public GameObject bulletFactory;
//μ΄κ΅¬
public GameObject firePosition;
}
πΆ Bullet νλ¦¬νΉ μ μ
- Project μ°½μ ν΄λλ₯Ό νλ λ§λ€μ΄ μ΄λ¦μ Prefabs μΌλ‘ λ³κ²½
- νμ΄μ΄λΌν€μ Bullet κ°μ²΄λ₯Ό λλκ·Έ μ€ λλ‘μΌλ‘ Project μ°½μ Prefabs ν΄λμ λ£μ΄μ€λ€.
πΆ Bullet ν λΉ
- μ¬μμ Bullet μ μ κ±°νλ€.
- PlayerFire μ Bullet Factory μμ±μ Bullet ν리νΉμ ν λΉ
πΆ μ΄κ΅¬ μ μ
- Player κ°μ²΄λ₯Ό μ ννκ³ λ§μ°μ€ μ°ν΄λ¦.
- Create Empty λ₯Ό μ ννλ©΄ μμμΌλ‘ λΉ κ²μμ€λΈμ νΈκ° λ±λ‘μ΄ λλ©°, μ΄λ¦μ FirePosition μΌλ‘ λ³κ²½.
πΆ μ΄κ΅¬ μμ± ν λΉ
- FirePosition κ°μ²΄λ₯Ό Player μ PlayerFire μ€ν¬λ¦½νΈμ ν λΉ
πΆ μ¬μ©μκ° λ°μ¬ λ²νΌμ λλ₯΄λ©΄
- μ¬μ©μκ° μΌμͺ½ λ§μ°μ€λ²νΌ ν΄λ¦μ νκ±°λ μΌμͺ½ Ctrl λ²νΌμ λλ μλμ μ λ ₯μ²λ¦¬λ “Fire1” μ ν΄λΉνλ€.
- GetButtonDown ν¨μλ₯Ό ν΅ν΄ μ λ ₯μ¬λΆλ₯Ό νμΈνμ¬ μ²λ¦¬λ₯Ό ν μ μλ€.
π₯οΈ PlayerFire.cs λ°μ¬ μ λ ₯μ²λ¦¬
public class PlayerFire : MonoBehaviour
{
. . . (μλ΅) . . .
void Update()
{
//λͺ©ν: μ¬μ©μκ° λ°μ¬ λ²νΌμ λλ₯΄λ©΄ μ΄μμ λ°μ¬νκ³ μΆλ€.
//μμ : 1.μ¬μ©μκ° λ°μ¬ λ²νΌμ λλ₯΄λ©΄
// - λ§μ½ μ¬μ©μκ° λ°μ¬ λ²νΌμ λλ₯΄λ©΄
if (Input.GetButtonDown("Fire1"))
{
//2.μ΄μ 곡μ₯μμ μ΄μμ λ§λ λ€.
//3.μ΄μμ λ°μ¬νλ€.
}
}
}
πΆ μ΄μ 곡μ₯μμ μ΄μμ λ§λ λ€
- Instantiate ν¨μμ μΈμλ‘ μ΄μ곡μ₯ bulletFactory λ₯Ό λ£μ΄ μ£Όλ©΄ μ΄μμ νλ μμ± ν΄μ€λ€.
π₯οΈ PlayerFire.cs μ΄μ μμ±
public class PlayerFire : MonoBehaviour
{
. . . (μλ΅) . . .
void Update()
{
//λͺ©ν: μ¬μ©μκ° λ°μ¬ λ²νΌμ λλ₯΄λ©΄ μ΄μμ λ°μ¬νκ³ μΆλ€.
//μμ : 1.μ¬μ©μκ° λ°μ¬ λ²νΌμ λλ₯΄λ©΄
// - λ§μ½ μ¬μ©μκ° λ°μ¬ λ²νΌμ λλ₯΄λ©΄
if (Input.GetButtonDown("Fire1"))
{
//2.μ΄μ 곡μ₯μμ μ΄μμ λ§λ λ€.
GameObject bullet = Instantiate(bulletFactory);
//3.μ΄μμ λ°μ¬νλ€.
}
}
}
πΆ μ΄μμ λ°μ¬νλ€
- λ§λ€μ΄μ§ bullet κ°μ²΄μ μμ±μΌλ‘ μ μΈν firePosition μ΄κ΅¬μ μμΉλ₯Ό ν λΉ
π₯οΈ PlayerFire.cs μ΄μ λ°μ¬
public class PlayerFire : MonoBehaviour
{
. . . (μλ΅) . . .
void Update()
{
//λͺ©ν: μ¬μ©μκ° λ°μ¬ λ²νΌμ λλ₯΄λ©΄ μ΄μμ λ°μ¬νκ³ μΆλ€.
//μμ : 1.μ¬μ©μκ° λ°μ¬ λ²νΌμ λλ₯΄λ©΄
// - λ§μ½ μ¬μ©μκ° λ°μ¬ λ²νΌμ λλ₯΄λ©΄
if (Input.GetButtonDown("Fire1"))
{
//2.μ΄μ 곡μ₯μμ μ΄μμ λ§λ λ€.
GameObject bullet = Instantiate(bulletFactory);
//3.μ΄μμ λ°μ¬νλ€.(μ΄μμ μ΄κ΅¬μμΉλ‘ κ°μ Έλ€ λκΈ°)
bullet.transform.position = firePosition.transform.position;
}
}
}
[6].2 μ μ΄λ & μΆ©λ
πΆ Enemy κ°μ²΄ μμ±
- νμ΄μ΄λΌν€μμ + λ²νΌμ λλ¬ κ·Έλ¦Όκ³Ό κ°μ΄ 3D Object μ Cube λ₯Ό νλ λ§λ€κ³ μ΄λ¦μ Enemyλ‘ λ³κ²½
πΆ Enemy μμΉ μ€μ
- μ μ΄ μμ±λλ μμΉλ νλ©΄μ μμͺ½μ΄λ Enemyμ Transform μ Position μ 보λ₯Ό λ³κ²½
πΆ Enemy μ€ν¬λ¦½νΈ ν λΉ
- Project μ°½μμ Scripts ν΄λμ Enemy λΌλ μ΄λ¦μ μ€ν¬λ¦½νΈλ₯Ό λ§λ λ€.
- νμ΄μ΄λΌν€μ Enemy κ²μμ€λΈμ νΈμ λλκ·Έ μ€ λλ‘μΌλ‘ λΆμ¬ μ€λ€.
πΆ μ΄λ μ½λ μμ±
- μ΄λμλ μμ±μ μ μΈ
- λ°©ν₯μ ꡬνκ³ μ΄λ곡μμΌλ‘ μ½λλ₯Ό ꡬννλ€.
π₯οΈ Enemy.cs μλλ‘ μ΄λμν€κΈ°
public class Enemy : MonoBehaviour
{
//νμμμ± : μ΄λμλ
public float speed = 5;
void Update()
{
// 1. λ°©ν₯μ ꡬνλ€.
Vector3 dir = Vector3.down;
// 2. μ΄λνκ³ μΆλ€. 곡μ P = P0 + vt
transform.position += dir * speed * Time.deltaTime;
}
}
πΆ μΆ©λμ μν 쑰건
- λͺΈμ²΄μ ν΄λΉνλ μΆ©λ체 Collder κ° νμ
- 물리 μν μ λ΄λΉν Rigidbody κ° νμ
πΆ μΆ©λ체
- Enemy κ²μμ€λΈμ νΈμ λΆμ΄ μλ κΈ°λ³Έ μΆ©λ체λ BoxCollider μ΄λ€.
πΆ 물체λΌλ¦¬ μΆ©λνκΈ°
- Enemy κ²μμ€λΈμ νΈμ Physics νλͺ©μ Rigidbodyλ₯Ό ν΄λ¦ν΄μ μ»΄ν¬λνΈλ₯Ό μΆκ°
- μ€λ ₯μ μ¬μ©νμ§ μκ² νλλ‘ Use Gravity μμ±μ κΊΌμ€λ€.
πΆ μΆ©λν 물체 νκ΄΄νκΈ°
- 물체μ μΆ©λμ κ°μ§νλ ν¨μλ OnCollisionEnter ν¨μμ΄λ©° μ΄κ³³μμ λΆλͺν κ°μ²΄(other) λ₯Ό μ κ±°νκ³ λ³ΈμΈλ μ κ±°νλ€.
π₯οΈ Enemy.cs μΆ©λ μ²λ¦¬
public class Enemy : MonoBehaviour
{
. . . (μλ΅) . . .
// μΆ©λ μμ
private void OnCollisionEnter(Collision other)
{
// λμ£½κ³
Destroy(other.gameObject);
// λμ£½μ
Destroy(gameObject);
}
}
π‘μ¬κΈ°μ... μ€ν λ²νΌμ λλ¬μ μΆ©λμμΌ°λλ μ¬κ³Ό νμ΄μ΄λΌν€μμ κ·Έλλ‘ μ¬λΌμ§ ...
[6].3 μ μλ μμ±
πΆ Enemy Prefab μ μ λ° μ κ±°
- νμ΄μ΄λΌν€(Hierarchy)μ°½μ Enemy κ²μμ€λΈμ νΈλ₯Ό νλ‘μ νΈ(Project)μ°½μ Prefabsν΄λμͺ½μΌλ‘ λλκ·Έ μ€ λλ‘ν΄μ ν리νΉμΌλ‘ λ§λ€μ΄ μ€λ€.
- νμ΄μ΄λΌν€μ Enemy κ²μμ€λΈμ νΈλ Delν€λ₯Ό λλ¬μ μμ
πΆ μν μ μ λ° κ°μ²΄ μμ±
- μΌμ μκ° λ§λ€ μ μ λ§λ€μ΄ λ΄λλ‘ νλ©° EnemyManagerμ μμΉμμ μ μ΄ μμ± λλλ‘ νλ€.
- νμ΄μ΄λΌν€μμ [+] -> [Create Empty] μ μ ννμ¬ λΉ κ²μμ€λΈμ νΈλ₯Ό νλ λ§λ€κ³ μ΄λ¦μ EnemyManagerλ‘ λ³κ²½
πΆ κΈ°μ¦λͺ¨ μ€μ
- Sceneμμ μ λΉν μμΉμ λ°°μΉ ν μ 보μ΄λλ‘ μμ΄μ½ κΈ°μ¦λͺ¨λ₯Ό μ€μ
- μμ΄μ½ κΈ°μ¦λͺ¨ μ€μ μ EnemyManager κ²μμ€λΈμ νΈλ₯Ό ν΄λ¦ν ν Inspectorμ°½μ λ°λ‘ μλμͺ½μ μλ νλΈ λͺ¨μμ λ²νΌμ λλ₯Έλ€
πΆ EnemyManager μ€ν¬λ¦½νΈ μμ± λ° ν λΉ
- Project μ°½μμ Scripts ν΄λμ EnemyManager λΌλ μ΄λ¦μ μ€ν¬λ¦½νΈλ₯Ό λ§λ€μ΄ μ€λ€.
- νμ΄μ΄λΌν€μ EnemyManager κ²μμ€λΈμ νΈμ λλκ·Έ μ€ λλ‘μΌλ‘ λΆμ¬ μ€λ€.
πΆ λͺ©νμ€μ
λͺ©ν | μΌμ μκ°λ§λ€ μ μ μμ±ν΄μ λ΄ μμΉμ κ°λ€ λκ³ μΆλ€ |
νμμμ± | μΌμ μκ°, νμ¬μκ°, μ 곡μ₯ |
μμ | 1. μκ°μ΄ νλ₯΄λ€κ° 2. λ§μ½ νμ¬μκ°μ΄ μΌμ μκ°μ΄ λλ©΄ 3. μ 곡μ₯μμ μ μ μμ±ν΄μ λ΄ μμΉμ κ°λ€ λκ³ μΆλ€. |
πΆ νμ μμ± μ μΈ
- “μΌμ μκ°λ§λ€ μ μ μμ±ν΄μ λ΄ μμΉμ κ°λ€ λκ³ μΆλ€” λ₯Ό ꡬννκΈ° μν΄ νμν μ 보λ μΌμ μκ°, μμ±ν μ 곡μ₯, κ·Έλ¦¬κ³ κ²½κ³Όλ μκ°μΈ νμ¬ μκ°μΌλ‘ λ³Ό μ μλ€.
- Enemy ν리νΉμ EnemyManager μ Enemy Factory μμ±μ ν λΉνμ¬ μ€λ€.
π₯οΈ EnemyManager.cs νμμμ± μ μΈ
public class EnemyManager : MonoBehaviour
{
// νμ¬μκ°
float currentTime;
// μΌμ μκ°
public float createTime = 1;
// μ 곡μ₯
public GameObject enemyFactory;
}
πΆ μκ°μ΄ νλ₯΄λ€κ°
- μκ°μ κ³μ νλ₯΄κ² νκΈ°μν΄ λΌμ΄νμ¬μ΄ν΄ ν¨μ μ€ Update ν¨μμ λ΄μ©μ ꡬννλ€.
- deltaTime μ νμ©νμ¬ μκ°μ λμ μμΌ μμ±
π₯οΈ EnemyManager.cs μκ°μ΄ νλ₯΄λ€κ°
public class EnemyManager : MonoBehaviour
{
. . . (μλ΅) . . .
void Update()
{
// 1. μκ°μ΄ νλ₯΄λ€κ°
currentTime += Time.deltaTime;
}
}
πΆ λ§μ½ νμ¬ μκ°μ΄ μΌμ μκ°μ΄ λλ©΄
- κ²½κ³Ό μκ°μ΄ μμ± μκ°μ μ΄κ³Όνλ©΄ λ¬Έμ₯μ ꡬννλ€.
- λ¨μ C# μ΄λΌλ μΈμ΄λ‘ λ²μνλ ννμμ μΈμ§.
π₯οΈ EnemyManager.cs νμ¬μκ°μ΄ μΌμ μκ°μ΄ λλ©΄
public class EnemyManager : MonoBehaviour
{
. . . (μλ΅) . . .
void Update()
{
// 1. μκ°μ΄ νλ₯΄λ€κ°
currentTime += Time.deltaTime;
// 2. λ§μ½ νμ¬μκ°μ΄ μΌμ μκ°μ΄ λλ©΄
if (currentTime > createTime)
{
// 3. μ 곡μ₯μμ μ μ μμ±ν΄μ
// λ΄ μμΉμ κ°λ€ λκ³ μΆλ€
}
}
}
πΆ μ 곡μ₯μμ μ μ μμ±ν΄μ λ΄ μμΉμ κ°λ€ λκ³ μΆλ€.
- μ 곡μ₯μμ μ μ λ§λ€μ΄μ λ΄ μμΉμ κ°λ€ λλλ€.
π₯οΈ EnemyManager.cs μ μμ±νκΈ°
public class EnemyManager : MonoBehaviour
{
. . . (μλ΅) . . .
void Update()
{
// 1. μκ°μ΄ νλ₯΄λ€κ°
currentTime += Time.deltaTime;
// 2. λ§μ½ νμ¬μκ°μ΄ μΌμ μκ°μ΄ λλ©΄
if (currentTime > createTime)
{
// 3. μ 곡μ₯μμ μ μ μμ±ν΄μ
GameObject enemy = Instantiate(enemyFactory);
// λ΄ μμΉμ κ°λ€ λκ³ μΆλ€.
enemy.transform.position = transform.position;
}
}
}
πΆ μ€ν λ° λ¬Έμ νμΈ
- κ·Έλ°λ° νμ΄μ΄λΌν€λ₯Ό 보면 μ μ΄ μ¬λ¬ κ° μμ±λμ΄ μλ κ²μ νμΈν μ μλ€.
- νμ¬μκ°μ΄ μΌμ μκ°μ΄ λκ³ λ ν κ³μ μΌμ μκ° λ³΄λ€ ν¬κΈ° λλ¬Έμ μ μ κ³μ μμ±
- μ΄κ²μ ν΄κ²°νκΈ° μν΄ νμ¬μκ°μ΄ μΌμ μκ°λ³΄λ€ 컀μ§λ©΄ νμ¬μκ°μ 0μΌλ‘ μ΄κΈ°νν΄μΌ νλ€.
- κ²½κ³Ό μκ°μ μ΄κΈ°ν νμ¬ λ¬Έμ ν΄κ²°
π₯οΈ EnemyManager.cs νμ¬μκ°μ 0μΌλ‘ μ΄κΈ°ν
public class EnemyManager : MonoBehaviour
{
. . . (μλ΅) . . .
void Update()
{
// 1. μκ°μ΄ νλ₯΄λ€κ°
currentTime += Time.deltaTime;
// 2. λ§μ½ νμ¬μκ°μ΄ μΌμ μκ°μ΄ λλ©΄
if (currentTime > createTime)
{
// 3. μ 곡μ₯μμ μ μ μμ±ν΄μ
GameObject enemy = Instantiate(enemyFactory);
// λ΄ μμΉμ κ°λ€ λκ³ μΆλ€.
enemy.transform.position = transform.position;
// νμ¬μκ°μ 0μΌλ‘ μ΄κΈ°ν
currentTime = 0;
}
}
}
πΆ EnemyManager λ°°μΉ
- EnemyManager κ²μμ€λΈμ νΈλ₯Ό ν΄λ¦νκ³ ν€λ³΄λμ [Ctrl + D]ν€λ₯Ό λλ¬ λ³΅μ .
- λ€ λ² λ³΅μ ν΄μ λ€μ― κ°μ EnemyManagerλ₯Ό λ§λ€κ³ κ°λ‘λ‘ 2μ λ(λ―Έν°) κ°κ²©μΌλ‘ λ°°μΉν΄μ€λ€.
πΆ λͺ©ν λ° νμ μμ± μΆκ°
- λͺ©ν : μ μ΄ μμ±λ λλ§λ€ λ€μ μμ± μκ°μ λλ€νκ² νκ³ μΆλ€.
- νμμμ± : μ΅μ, μ΅λμκ°
π₯οΈ EnemyManager.cs μ΅μμκ°, μ΅λμκ° μΆκ°
public class EnemyManager : MonoBehaviour
{
// μ΅μμκ°
float minTime = 1;
// μ΅λμκ°
float maxTime = 5;
. . . (μλ΅) . . .
}
πΆ μμ±μκ° λλ€μΌλ‘ μ€μ
π₯οΈ EnemyManager.cs μμ±μκ°μ λλ€νκ² μ μ©
public class EnemyManager : MonoBehaviour
{
. . . (μλ΅) . . .
void Start()
{
// νμ΄λ λ μ μμ±μκ°μ μ€μ νκ³
createTime = UnityEngine.Random.Range(minTime, maxTime);
}
void Update()
{
// 1. μκ°μ΄ νλ₯΄λ€κ°
currentTime += Time.deltaTime;
// 2. λ§μ½ νμ¬μκ°μ΄ μΌμ μκ°μ΄ λλ©΄
if (currentTime > createTime)
{
. . . (μλ΅) . . .
// μ μ μμ±ν ν μ μμ±μκ°μ λ€μ μ€μ νκ³ μΆλ€.
createTime = UnityEngine.Random.Range(minTime, maxTime);
}
}
}
6.[4] μ μΈκ³΅μ§λ₯
πΆ νλ₯ μ μν λΆκΈ°μ²λ¦¬
- Random ν΄λμ€λ₯Ό μ΄μ©ν΄μ 0~9μ€ λλ€ν νλμ μλ₯Ό κ°μ Έμμ κ·Έ κ°μ΄ 3λ³΄λ€ μμΌλ©΄ νλ μ΄μ΄λ°©ν₯, κ·Έλ μ§ μμΌλ©΄ μλλ°©ν₯μ΄ λλλ‘ μ‘°κ±΄μ λ§λ λ€.
π₯οΈ Enemy.cs νλ₯ μ μν λΆκΈ°μ²λ¦¬
public class Enemy : MonoBehaviour
{
. . . (μλ΅) . . .
void Start()
{
// 0λΆν° 9(10-1) κΉμ§ κ°μ€μ νλλ₯Ό λλ€μΌλ‘ κ°μ Έμμ
int randValue = UnityEngine.Random.Range(0, 10);
// λ§μ½ 3λ³΄λ€ μμΌλ©΄ νλ μ΄μ΄λ°©ν₯
if (randValue < 3)
{
}
// κ·Έλ μ§ μμΌλ©΄ μλλ°©ν₯μΌλ‘ μ νκ³ μΆλ€.
else
{
}
}
. . . (μλ΅) . . .
}
πΆ λ°©ν₯ ꡬνκΈ°
- λ¨Όμ Target μΈ Player λ₯Ό GameObject.Find ν¨μλ₯Ό μ΄μ©νμ¬ μ°Ύλλ€.
- Vector μ λΊμμ νμ©νμ¬ μνλ λ°©ν₯μ μ°ΎμλΈλ€.
- μ κ·ν(Normalize) λ₯Ό μ μ©νμ¬ Vector μ ν¬κΈ°λ₯Ό 1λ‘ λ§λ€μ΄ μ€λ€.
- νκ² λ°©ν₯μ΄ μλ κ²½μ°μλ μλ λ°©ν₯μΌλ‘ μ ν΄μ€λ€.
π₯οΈ Enemy.cs λ°©ν₯ ꡬνκΈ°
public class Enemy : MonoBehaviour
{
. . . (μλ΅) . . .
void Start()
{
Vector3 dir;
// 0λΆν° 9(10-1) κΉμ§ κ°μ€μ νλλ₯Ό λλ€μΌλ‘ κ°μ Έμμ
int randValue = UnityEngine.Random.Range(0, 10);
// λ§μ½ 3λ³΄λ€ μμΌλ©΄ νλ μ΄μ΄λ°©ν₯
if (randValue < 3)
{
// νλ μ΄μ΄λ₯Ό μ°Ύμμ targetμΌλ‘ νκ³ μΆλ€.
GameObject target = GameObject.Find("Player");
// λ°©ν₯μ ꡬνκ³ μΆλ€. target - me
dir = target.transform.position - transform.position;
// λ°©ν₯μ ν¬κΈ°λ₯Ό 1λ‘ νκ³ μΆλ€.
dir.Normalize();
}
// κ·Έλ μ§ μμΌλ©΄ μλλ°©ν₯μΌλ‘ μ νκ³ μΆλ€.
else
{
dir = Vector3.down;
}
}
. . . (μλ΅) . . .
}
- μ§μλ³μ dir μ μ μ λ³μλ‘ λ³κ²½
- μ λν°μμ μ€ννμ¬ κ²°κ³Ό νμΈ
π₯οΈ Enemy.cs λ°©ν₯ μ ν΄μ κ·Έ λ°©ν₯μΌλ‘ μ΄λ
public class Enemy : MonoBehaviour
{
. . . (μλ΅) . . .
// λ°©ν₯μ μ μλ³μλ‘ λ§λ€μ΄μ Startμ Updateμμ μ¬μ©
Vector3 dir;
void Start()
{
// Vector3 dir; -> μμ
. . . (μλ΅) . . .
}
void Update()
{
// 1. λ°©ν₯μ ꡬνλ€.
// Vector3 dir = Vector3.down; -> μμ
// 2. μ΄λνκ³ μΆλ€. 곡μ P = P0 + vt
transform.position += dir * speed * Time.deltaTime;
}
. . . (μλ΅) . . .
}
'μμΈμ¬μλνκ΅ SWU > 2023 μ¬λ¦λ°©ν SWμ¬κ΄νκ΅ Programing GURU' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[8] μν κ²μ μ μ (4) (0) | 2023.07.07 |
---|---|
[7] μν κ²μ μ μ (3) (0) | 2023.07.06 |
[5] μν κ²μ μ μ (1) (6) | 2023.07.04 |
[4] C# μ€ν¬λ¦½νΈ (3) (6) | 2023.06.30 |
[3] C# μ€ν¬λ¦½νΈ (2) (6) | 2023.06.29 |