μ„œμšΈμ—¬μžλŒ€ν•™κ΅ SWU/2023 여름방학 SW사관학ꡐ Programing GURU

[5] μŠˆνŒ… κ²Œμž„ μ œμž‘ (1)

waterproof 2023. 7. 4. 09:16

[5].1 ν”„λ‘œμ νŠΈ 생성과 ν™˜κ²½μ„€μ •
[5].2 ν”Œλ ˆμ΄μ–΄ μ΄λ™μ œμž‘
[5].3 μ΄μ•Œ 이동 μ œμž‘

 


[5].1 ν”„λ‘œμ νŠΈ 생성과 ν™˜κ²½μ„€μ •

더보기

βš™οΈμ΄λ²ˆμ— 진행할 λ‚΄μš©μ€ 2020 버전(이상) μœ λ‹ˆν‹°κ°€ ν•„μš”ν•©λ‹ˆλ‹€.

βœ”οΈAndroid Build Support 체크 ν›„ λ‹€μš΄λ‘œλ“œ 진행

 

 

 

πŸ”Ά μŠˆνŒ… κ²Œμž„ ν”„λ‘œμ νŠΈ μƒμ„±ν•˜κΈ°

  • Unity Hub μ‹€ν–‰

Unity Hub ν”„λ‘œμ νŠΈμƒμ„±

 

  • ν…œν”Œλ¦Ώμ€ 3D둜 지정
  • ν”„λ‘œμ νŠΈ 이름을 ShootingGame으둜 지정
  • 생성 λ²„νŠΌμ„ ν΄λ¦­ν•˜μ—¬ ν”„λ‘œμ νŠΈ 생성

ShootingGame μ΄λ¦„μœΌλ‘œ ν”„λ‘œμ νŠΈ 생성

 

 

  • ShootingGame 으둜 ν”„λ‘œμ νŠΈκ°€ λ§Œλ“€μ–΄μ§€λ©΄ μœ λ‹ˆν‹°κ°€ μ‹€ν–‰λœλ‹€.

ShootingGame 으둜 μ—΄λ¦° μœ λ‹ˆν‹°μ—λ””ν„°

 

 

 

πŸ”Ά μ œμž‘ ν™˜κ²½ μ„€μ •ν•˜κΈ° - 씬 μ„€μ •

  • Scene λ·°λ₯Ό lso λͺ¨λ“œλ‘œ λ³€κ²½ν•˜κ³  기즈λͺ¨λ₯Ό ν΄λ¦­ν•˜μ—¬ 화면이 Back λ·°κ°€ λ˜λ„λ‘ μ„€μ •

cene 의 원근λͺ¨λ“œλ₯Ό 직ꡐλͺ¨λ“œλ‘œ λ³€ν™˜
기즈λͺ¨λ₯Ό ν΄λ¦­ν•˜μ—¬ Back ν™”λ©΄μœΌλ‘œ μ „ν™˜

 

 

 

 

πŸ”Ά μ œμž‘ ν™˜κ²½ μ„€μ •ν•˜κΈ° - 카메라 μ„€μ •

  • μ”¬μ—λŠ” λ°˜λ“œμ‹œ ν•˜λ‚˜ μ΄μƒμ˜ Main Camera κ°€ 쑴재
  • μΉ΄λ©”λΌμ—λŠ” 카메라 μ½€ν¬λ„ŒνŠΈκ°€ λΆ™μ–΄ μΉ΄λ©”λΌμ˜ 역할을 ν•œλ‹€

(μ™Ό) 씬에 μžˆλŠ” Main Camera    (였)Main Camera 의 μ»΄ν¬λ„ŒνŠΈ

 

 

  • Main Camera 의 Position 을 κ·Έλ¦Όκ³Ό 같이 μ„ΈνŒ…
  • Projection 을 Orthographics 으둜 μ„€μ •

Main Camera 의 Position 속성과 Projection μ„€μ •

 

 

 

πŸ”Ά μ œμž‘ ν™˜κ²½ μ„€μ •ν•˜κΈ° -  μ‘°λͺ… μ„€μ •

Directional Light 의 Light μ»΄ν¬λ„ŒνŠΈ λΉ„ν™œμ„±ν™”

  • ν•˜μ΄μ–΄λΌν‚€ μ°½μ—μ„œ Direction Light λ₯Ό 선택
  • Light μ»΄ν¬λ„ŒνŠΈλ₯Ό λΉ„ν™œμ„±ν™” ν•΄μ€€λ‹€.

 

 

(μ™Ό)Lighting μ°½ μ—΄κΈ°           (였)Lighting - Audio Generate μ˜΅μ…˜ 끄기

  • [window - Rendering - Lighting] 창을 μ—΄μ–΄μ€€λ‹€.
  • Lighting 창이 열리면 Scene νƒ­μ˜ 맨 ν•˜λ‹¨μ˜ Auto Generate μ˜΅μ…˜μ„ λΉ„ν™œμ„±ν™” ν•΄μ€€λ‹€.

 

 

(μ™Ό)Lighting – Environments Lighting λ³€κ²½     (였)Lighting – Ambient Color 값을 white 둜 λ³€κ²½

  • Environment ν•­λͺ©μ—μ„œ Environment Lighting 의 Source λ₯Ό Color 둜 λ³€κ²½
  • μ΄λ•Œ λ‚˜νƒ€λ‚˜λŠ” Ambient ColorRGB 값을 λͺ¨λ‘ 255둜 μˆ˜μ •ν•˜μ—¬ ν°μƒ‰μœΌλ‘œ 지정

 

 

 

πŸ”Ά μ œμž‘ ν™˜κ²½ μ„€μ •ν•˜κΈ° -  해상도 μ„€μ •

  • Game μ°½μ—μ„œ 해상도 변결을 μœ„ν•΄ νˆ΄λ°”μ˜ 해상도 κ΄€λ ¨ λ“œλ‘­λ‹€μš΄ 메뉴λ₯Ό μ—΄μ–΄ [+} λ²„νŠΌμ„ λˆŒλŸ¬μ€€λ‹€.
  • 해상도λ₯Ό 640 x 960 으둜 κ°€λ‘œ, μ„Έλ‘œ 값을 μ§€μ •ν•œλ‹€.

Game μ°½ 해상도 λ³€κ²½

 

 

640 x 960 해상도 ν™”λ©΄

 

 

 


[5].2 ν”Œλ ˆμ΄μ–΄ 이동 μ œμž‘

πŸ”Ά ν”Œλ ˆμ΄μ–΄ κ²Œμž„ 였브젝트

  • ν•˜μ΄μ–΄λΌν‚€μ°½μ—μ„œ [+] λ²„νŠΌμ„ 눌러 [3D Object - Cube]λ₯Ό μƒμ„±ν•˜κ³  이름을 Player둜 λ³€κ²½ν•œλ‹€.
  • Transform 값은 그림처럼 μ§€μ •ν•œλ‹€.

씬에 Cube λ₯Ό 생성
Transform κ°’ μ΄ˆκΈ°ν™”μ™€ λ§Œλ“€μ–΄μ§„ Player 객체

 

 

 

πŸ”Ά Scripts 폴더 μΆ”κ°€

  • ν”„λ‘œμ νŠΈ(Project) μ°½μ—μ„œ + λ²„νŠΌμ„ 눌러 Folder λ₯Ό μ„ νƒν•˜κ³  이름을 Scripts 둜 λ³€κ²½

Scripts 폴더 생성

 

 

 

πŸ”Ά PlayerMove 슀크립트 생성

  • [+] λ²„νŠΌμ„ 눌러 Scripts 폴더 λ‚΄ C# Script λ₯Ό λ§Œλ“€μ–΄μ£Όκ³  이름은 PlayerMove 둜 지정
  • PlayerMove λΌλŠ” 파일 이름과 μ•„λž˜ 그림처럼 클래슀 이름이 μ™„μ „νžˆ κ°™μ•„μ•Ό ν•œλ‹€.

νŒŒμΌμ΄λ¦„κ³Ό 클래슀 이름이 λ°˜λ“œμ‹œ 동일해야 ν•œλ‹€.

 

 

 

 

πŸ”Ά PlayerMove 슀크립트 ν• λ‹Ή

  • PlayerMove 슀크립트λ₯Ό λ“œλž˜κ·Έν•˜μ—¬ ν•˜μ΄μ–΄λΌν‚€μ˜ Player 객체에 λ“œλ‘­

PlayerMove 슀크립트λ₯Ό Player 에 ν• λ‹Ή
PlayerMove μŠ€ν¬λ¦½νŠΈκ°€ μ»΄ν¬λ„ŒνŠΈλ‘œ μΆ”κ°€λœ μƒνƒœ

 

 

 

πŸ”Ά ν”Œλ ˆμ΄μ–΄ 이동 μ‹œν‚€κΈ° 1

  • PlayerMove.cs 에 μ•„λž˜ μ½”λ“œλ₯Ό μž‘μ„±ν•˜κ³  μ €μž₯
  • Unity둜 λŒμ•„κ°€ μ‹€ν–‰ κ²°κ³Όλ₯Ό ν™•μΈν•œλ‹€.
  • 슀크립트λ₯Ό μˆ˜μ •ν•˜μ—¬, μ™Όμͺ½, μœ„, μ•„λž˜λ‘œλ„ 이동할 수 μžˆλ„λ‘ 슀크립트λ₯Ό μˆ˜μ •ν•˜μ—¬ λ³Έλ‹€.
  • μ½”λ“œμ˜ Vector3.right λ₯Ό Vector3.up, Vector3.down 으둜 κ΅μ°¨ν•˜λ©΄ λœλ‹€.

πŸ–₯️ PlayerMove.cs ν”Œλ ˆμ΄μ–΄ 이동 μ½”λ“œ

public class PlayerMove : MonoBehaviour
{ 
	void Update()
	{
		transform.Translate(Vector3.right * 5 * Time.deltaTime);
	}
}

 

 

 

πŸ”Ά ν”Œλ ˆμ΄μ–΄ 이동 μ‹œν‚€κΈ° 1 - Vector

  • Vector λŠ” 크기와 λ°©ν–₯을 κ°–κ³  μžˆλ‹€. 
  • 사칙연산 쀑 λ”ν•˜κΈ°, λΉΌκΈ°, κ³±ν•˜κΈ°(내적, 외적) 이 κ°€λŠ₯ν•˜λ‹€.
  • ν¬κΈ°λŠ” κ·Έλ¦Όμ—μ„œ νŒŒλž€μƒ‰, λ°©ν–₯은 빨간색 ν™”μ‚΄ν‘œλ‘œ ν‘œμ‹œ

Vector 크기와 λ°©ν–₯

 

 

 

πŸ”Ά ν”Œλ ˆμ΄μ–΄ 이동 μ‹œν‚€κΈ° 1 - Vector λ”ν•˜κΈ°

  • Vector λŠ” λͺ¨λ“  힘의 합을 ν‘œν˜„
  • 였λ₯Έμͺ½ ν™”μ‚΄ν‘œ 킀와 μœ„μͺ½ ν™”μ‚΄ν‘œ ν‚€λ₯Ό λˆ„λ₯΄λ©΄ λŒ€κ°μ„ μœΌλ‘œ κ°€λŠ” λ°©ν–₯을 λ§Œλ“€μ–΄ λ‚Ό 수 μžˆλ‹€.
  • κ³¨ν”„κ²Œμž„, 당ꡬ, μ•΅κ·Έλ¦¬λ²„λ“œ, 포트리슀 같은 κ²Œμž„μ„ μ œμž‘ν•˜λŠ”λ° μ‚¬μš©ν•  수 μžˆλ‹€.

 

Vector의 λ”ν•˜κΈ°

 

 

 

πŸ”Ά ν”Œλ ˆμ΄μ–΄ 이동 μ‹œν‚€κΈ° 1 - Vector λΉΌκΈ°

  • μ›ν•˜λŠ” μ§€μ μœΌλ‘œ κ°€λŠ” λ°©ν–₯을 μ°Ύμ•„λ‚Ό λ•Œ μœ μš©ν•˜κ²Œ μ‚¬μš©
  • Direction = B - A 의 μ˜λ―ΈλŠ” Aκ°€ B둜 κ°€κ³ μž ν•˜λŠ” λ°©ν–₯을 μ°ΎλŠ” μˆ˜μ‹

Vector λΉΌκΈ°

 

  • μ „μ—­λ³€μˆ˜λ₯Ό ν™œμš©ν•˜μ—¬ Speed 속성을 외뢀에 λ…ΈμΆœ
  • μ΄λ ‡κ²Œ λ…ΈμΆœλœ 속성은 μœ λ‹ˆν‹° μ—λ””ν„°μ—μ„œ μˆ˜μ •μ΄ κ°€λŠ₯

πŸ–₯️ PlayerMove.cs에 speed 속성 μΆ”κ°€

public class PlayerMove : MonoBehaviour
{
	// ν”Œλ ˆμ΄μ–΄κ°€ 이동할 속λ ₯
	public float speed = 5;
	void Update()
	{
		transform.Translate(Vector3.right * speed * Time.deltaTime);
	}
}

μ™ΈλΆ€λ‘œ λ…ΈμΆœλœ speed 속성

 

 

 

πŸ”Ά ν”Œλ ˆμ΄μ–΄ 이동 μ‹œν‚€κΈ° 1 - 라이프사이클 ν•¨μˆ˜ (Life Cycle Fucntion)

  • μœ λ‹ˆν‹° 객체의 생애주기
  • ν‘œμ—μ„œμ²˜λŸΌ νƒœμ–΄λ‚¨μ€ Start, μ‚΄λ‹€κ°€λŠ” Update, μ£½λ‹€λŠ” OnDestory ν•¨μˆ˜λ‘œ λ§€μΉ­λœλ‹€.
  • μœ λ‹ˆν‹°μ—μ„œμ˜ 이벀트 ν•¨μˆ˜μ—λŠ” μ ‘λ‘μ–΄λ‘œ On을 λΆ™μ—¬μ€€λ‹€.
  νƒœμ–΄λ‚¨ μ‚΄λ‹€κ°€ μ£½λ‹€
λ°œμƒ 횟수 1 계속 1
λ°œμƒ μΌμ‹œ 확인 μ—¬λΆ€ 0 0 X
μœ λ‹ˆν‹° ν•¨μˆ˜ Start Update OnDestroy

라이프 사이클

 

 

 

πŸ”Ά ν”Œλ ˆμ΄μ–΄ 이동 μ‹œν‚€κΈ° 1 - deltaTime

  • delta λŠ” λ³€ν™”λœ 것을 λœ»ν•œλ‹€.
  • κ·Έλ¦Όμ—μ„œ μ€‘κ°„μ˜ ꡬ간듀은 PCμ—μ„œ μ΄ˆλ‹Ή μ²˜λ¦¬ν•  수 μžˆλŠ” 횟수
  • 첫 번째 그림은 μ΄ˆλ‹Ή 4λ²ˆμ„ μ‹€ν–‰ν•  수 있고, 두 번째 그림은 μ΄ˆλ‹Ή 2λ²ˆμ„ μ‹€ν–‰ν•  수 μžˆκΈ°μ— μ΄ˆλ‹Ή 움직일 수 μžˆλŠ” 거리가 달라진닀.(ν•œλ²ˆμ— 1mμ”© 움직인닀면 μœ„λŠ” 4m, μ•„λž˜λŠ” 2m 이동)
  • 동기화 처리λ₯Ό μœ„ν•΄ ꡬ간에 κ±Έλ¦° μ‹œκ°„(μœ„ 0.25, μ•„λž˜ 0.5)λ₯Ό 각각의 이동 거리에 κ³±ν•΄μ£Όλ©΄ μ΅œμ’… 1mμ”©μœΌλ‘œ 움직인 거리가 같아진닀.
  • νšŒμ „, 크기 λ³€ν™˜ μž‘μ—…μ—λ„ deltaTime을 κ³±ν•΄μ£Όμ–΄ λ™κΈ°ν™”μ‹œμΌœμ•Ό ν•œλ‹€.

 

 

 

πŸ”Ά μ‚¬μš©μž μž…λ ₯ 처리

  • ν‚€λ³΄λ“œμ˜ μ’Œμš°ν‚€, A, D ν‚€μ˜ μž…λ ₯을 λŒ€μ‘ν•˜κΈ° μœ„ν•œ μ½”λ“œλ₯Ό μž‘μ„±
  • Unity의 [Edit - Project Setting - Input Manager] 의 속성에 λ“±λ‘λ˜μ–΄ μžˆλŠ”  Horizontal 을 ν™œμš©

πŸ–₯️ PlayerMove.cs μ‚¬μš©μž μž…λ ₯ 처리 κ°€λ‘œλ°©ν–₯

public class PlayerMove : MonoBehaviour
{
	// ν”Œλ ˆμ΄μ–΄κ°€ 이동할 속λ ₯
	public float speed = 5;
	void Update()
	{
		float h = Input.GetAxis("Horizontal");
		print(h);
		transform.Translate(Vector3.right * speed * Time.deltaTime);
	}
}

 

 

  • μƒν•˜ μž…λ ₯에 λŒ€μ‘ν•˜λŠ” μ½”λ“œ μž‘μ„±

πŸ–₯️ PlayerMove.cs μ‚¬μš©μž μž…λ ₯ 처리 μ„Έλ‘œλ°©ν–₯

public class PlayerMove : MonoBehaviour
{
	// ν”Œλ ˆμ΄μ–΄κ°€ 이동할 속λ ₯
	public float speed = 5;
	void Update()
	{
		float h = Input.GetAxis("Horizontal");
        
		float v = Input.GetAxis("Vertical");
		print("h : " + h + ", v : " + v);
			transform.Translate(Vector3.right * speed * Time.deltaTime);
	}
}

 

 

πŸ”Ά λ°©ν–₯ λ§Œλ“€κΈ°

  • "μ‚¬μš©μž μž…λ ₯에 따라 λ°©ν–₯ λ§Œλ“€μ–΄μ„œ μ΄λ™ν•œλ‹€." 이 λ‚΄μš©μ„ μš°λ¦¬λŠ” κ΅¬ν˜„
  • "λ°©ν–₯ λ§Œλ“€κΈ°" κ°€ μžˆμ–΄μ•Ό 이동이 κ°€λŠ₯
  • μ‚¬μš©μž μž…λ ₯μ—μ„œ 받은 값을 λ°©ν–₯을 λ§Œλ“œλŠ” 데에 μ‚¬μš©
  • λ§Œλ“€μ–΄μ§„ λ°©ν–₯을 μ΅œμ’… 이동 λ‘œμ§μ— 적용

πŸ–₯️ PlayerMove.cs λ°©ν–₯을 담을 λ³€μˆ˜ λ§Œλ“€κΈ°

public class PlayerMove : MonoBehaviour
{
	// ν”Œλ ˆμ΄μ–΄κ°€ 이동할 속λ ₯
	public float speed = 5;
	void Update()
	{
		float h = Input.GetAxis("Horizontal");
		float v = Input.GetAxis("Vertical");
        
		Vector3 dir = Vector3.right * h + Vector3.up * v;
		transform.Translate(dir * speed * Time.deltaTime);
	}
}

 

 

  • Vector3.right * h λ₯Ό x, y, z 에 λŒ€ν•œ 각 μ„±λΆ„μ˜ κ°’μœΌλ‘œ ν‘œν˜„ν•΄ 보면 (1, 0, 0) * h = (h, 0, 0) 이 λœλ‹€.
  • Vector3.up * v λŠ” (0, 1, 0) * v = (0, v, 0) λœλ‹€.
  • λ‘˜μ„ ν•©ν•˜λ©΄ (h, 0, 0) + (0, v, 0) = (h, v, 0) 이 λ˜λ―€λ‘œ.
  • 슀크립트λ₯Ό μ½”λ“œμ²˜λŸΌ 각 μ„±λΆ„μœΌλ‘œ λ³€κ²½ν•  수 μžˆλ‹€.

πŸ–₯️ PlayerMove.cs λ°©ν–₯을 κ°μ„±λΆ„μœΌλ‘œ μ œμž‘

public class PlayerMove : MonoBehaviour
{
	// ν”Œλ ˆμ΄μ–΄κ°€ 이동할 속λ ₯
	public float speed = 5;
	void Update()
	{
		float h = Input.GetAxis("Horizontal");
		float v = Input.GetAxis("Vertical");
		Vector3 dir = new Vector3(h, v, 0);
		transform.Translate(dir * speed * Time.deltaTime);
	}
}

 

 

 

πŸ”Ά ν”Œλ ˆμ΄μ–΄ 이동 μ‹œν‚€κΈ° 2

  • 물체λ₯Ό μ΄λ™ν•˜κΈ° μœ„ν•œ 물리 λ²•μΉ™μœΌλ‘œ 이동, 속도, 힘 에 κ΄€ν•œ 곡식을 μ‚¬μš©ν•œλ‹€.
  • P λŠ” μ•žμœΌλ‘œμ˜ μœ„μΉ˜, P0 λŠ” ν˜„μž¬, v λŠ” 속도, t λŠ” μ‹œκ°„μ„ 의미
  • F λŠ” 힘, m 은 μ§ˆλŸ‰, a λŠ” 가속도λ₯Ό 의미
P = P0 + vt
v = v0 + at
F = ma

 

  • Translate ν•¨μˆ˜λ₯Ό P = P0 + vt κ³΅μ‹μœΌλ‘œ λ³€ν™˜ν•˜μ—¬ μž‘μ„±

πŸ–₯️ PlayerMove.cs μ΄λ™κ³΅μ‹μœΌλ‘œ μ½”λ“œ λ³€ν™˜

public class PlayerMove : MonoBehaviour
{
	// ν”Œλ ˆμ΄μ–΄κ°€ 이동할 속λ ₯
	public float speed = 5;
	void Update()
	{
		float h = Input.GetAxis("Horizontal");
		float v = Input.GetAxis("Vertical");
		Vector3 dir = new Vector3(h, v, 0);
        
		// P = P0 + vt κ³΅μ‹μœΌλ‘œ λ³€κ²½
		transform.position += dir * speed * Time.deltaTime;
	}
}

 

 

 


[5].1 ν”„λ‘œμ νŠΈ 생성과 ν™˜κ²½μ„€μ •

 

πŸ”Ά Bullet 생성

  • ν•˜μ΄μ–΄λΌν‚€ νˆ΄λ°”μ˜ + λ²„νŠΌμ„ μ„ νƒν•˜μ—¬ Cube λ₯Ό ν•˜λ‚˜ λ§Œλ“€μ–΄ μ£Όκ³  이름을 Bullet 으둜 λ³€κ²½

Bullet κ²Œμž„μ˜€λΈŒμ νŠΈ 생성

 

 

 

πŸ”Ά Bullet μœ„μΉ˜ μ„€μ •

  • Bullet 의 Transform 정보λ₯Ό λ³€κ²½ν•΄ 주도둝 ν•œλ‹€.
  • μ΄μ•Œμ΄ 잘 보이도둝 μœ„μΉ˜λ₯Ό λ³€κ²½ν•˜κ³  μ΄μ•Œμ˜ 크기도 λ³€κ²½ν•΄ 주도둝 ν•œλ‹€.

Bullet Transform κ°’ μ„€μ •
Bullet Transform κ°’ μ„€μ • κ²°κ³Ό

 

 

 

πŸ”Ά Bullet 슀크립트 생성

  • Project 창의 νˆ΄λ°” λ²„νŠΌμΈ + λ₯Ό 눌러 Scripts 폴더에 C# 슀크립트λ₯Ό ν•˜λ‚˜ λ§Œλ“€μ–΄ μ£Όκ³  이름은 Bullet 으둜 λ³€κ²½

Bullet 슀크립트 ν• λ‹Ή

 

 

 

πŸ”Ά Bullet 슀크립트 ν• λ‹Ή

  • Bullet 슀크립트λ₯Ό μž‘μ•„μ„œ λ“œλž˜κ·Έ μ•€ λ“œλ‘­ν•˜μ—¬ Bullet κ²Œμž„ 였브젝트의 μ»΄ν¬λ„ŒνŠΈλ‘œ λΆ™μ—¬μ€€λ‹€.

Bullet 슀크립트 ν• λ‹Ή

 

 

 

πŸ”Ά λͺ©ν‘œμ— λ”°λ₯Έ ꡬ성 μˆœμ„œ

λͺ©ν‘œ μœ„λ‘œ 계속 μ΄λ™ν•˜κ³  μ‹Άλ‹€.
ν•„μš” 속성 이동 속도
μˆœμ„œ β‘  λ°©ν–₯ κ΅¬ν•˜κΈ°
β‘‘ μ΄λ™ν•˜κΈ°

 

 

 

 

πŸ”Ά 이동속도 속성 μΆ”κ°€

  • μœ λ‹ˆν‹° 에디터 상에 λ…ΈμΆœν•˜μ—¬ κΈ°νšμžκ°€ μˆ˜μ •ν•  수 μžˆλ„λ‘ μ ‘κ·Ό μ œν•œμžλ₯Ό public 둜 ν•˜μ—¬ speed λ³€μˆ˜λ₯Ό ν•˜λ‚˜ λ§Œλ“ λ‹€.

πŸ–₯️ Bullet.cs 이동속도 속성 μΆ”κ°€

public class Bullet : MonoBehaviour
{
	//ν•„μš”μ†μ„± : 이동속도
	public float speed = 5;
}

 

 

 

  • 라이프사이클 ν•¨μˆ˜ 쀑 μ‚΄μ•„κ°€λŠ” 쀑 계속 ν˜ΈμΆœλ˜λŠ” ν•¨μˆ˜λŠ” Update μ΄κΈ° λ•Œλ¬Έμ— μ΄ κ³³μ— κ΅¬ν˜„ λΆ€λ₯Ό μΆ”κ°€
  • λ¨Όμ € μœ„λ‘œ κ°€λŠ” up λ°©ν–₯을 κ΅¬ν•˜κ³  이동 곡식 P = P0 + vtλ₯Ό μ΄μš©ν•˜μ—¬ ν•΄λ‹Ή λ°©ν–₯으둜 μ΄λ™

πŸ–₯️ Bullet.cs μœ„λ‘œ 계속 μ΄λ™ν•˜κΈ° κΈ°λŠ₯ κ΅¬ν˜„ 

public class Bullet : MonoBehaviour
{
	//ν•„μš”μ†μ„± : 이동속도
	public float speed = 5;
	// Update is called once per frame
	void Update()
	{
		// 1. λ°©ν–₯을 κ΅¬ν•œλ‹€.
		Vector3 dir = Vector3.up;
		// 2. μ΄λ™ν•˜κ³  μ‹Άλ‹€. 곡식 P = P0 + vt
		transform.position += dir * speed * Time.deltaTime;
	}
}

 

 

 

 

 


이번 μ‹œκ°„μ—λŠ” ν”Œλ ˆμ΄μ–΄, μ΄μ•Œ 이동 μ œμž‘μ„ ν•΄λ³΄μ•˜λŠ”λ°μš”!

본격적으둜 κ²Œμž„μ„ κ΅¬μ„±ν•˜λŠ” μš”μ†Œλ₯Ό λ§Œλ“€κΈ° μ‹œμž‘ν•˜λŠ” 것이 λ³΄μ—¬μ„œ μ‹ κΈ°ν•˜κ³  μ„€λ ˆλ„€μš” πŸ˜™

물리 곡식을 μ½”λ“œμ— μ μš©ν•˜λŠ” 것이 μΈμƒκΉŠμ—ˆμŠ΅λ‹ˆλ‹€

μΆ”κ°€λ˜λŠ” λ‚΄μš©μ΄ λ§Žμ•„μ§€λŠ” 만큼 μ•žμœΌλ‘œ 더 μ—΄μ‹¬νžˆ λ³΅μŠ΅ν•˜κ³  λ”°λΌκ°€κ² μŠ΅λ‹ˆλ‹€!

κΈ€ μ½μ–΄μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€ πŸ™‡‍♀️