#Chapter.14 - 단위벡터와 등속운동 & 등가속운동
단위벡터: 크기가 1이고 방향을 가진 기본벡터. ("법선벡터" 라고도 한다.)
[단위벡터: 벡터 V / 벡터 V의 크기]
모든 벡터는 "벡터의 정규화" 를 통해서 단위벡터가 될 수있다.
< 사용된 Key Word >
「 input_vector =input_vector.normalized() 」 - 속도변수를 "단위벡터" 로 만들어준다. "벡터의 정규화".
「 등가속도 운동공식 」 - " 속도 = 초기속도 + 가속도 × 시간"
[등속운동]
#현재 노드의 타입을 상속받음.
extends KinematicBody2D
#속도변수 velocity 를 기본값으로 초기화시킴.
var velocity = Vector2.ZERO
#속력의 최댓값을 상수 100으로 고정시킴.
const MAX_SPEED = 100
#상하좌우 움직일 시, 속도 3으로 움직임. 키입력 없을 시 정지상태.
func _physics_process(delta):
#새로운 속도변수 초기화.
var input_vector = Vector2.ZERO
#새로운 속도는 (오른쪽에서 왼쪽의 값을뺀 정도 / 아래에서 위를 뺀 정도) 이다.
input_vector.x = Input.get_action_strength("ui_right") - Input.get_action_strength("ui_left")
input_vector.y = Input.get_action_strength("ui_down") - Input.get_action_strength("ui_up")
#새로운 속도변수를 "단위벡터" 로 만들어 줌. "벡터의 정규화".
input_vector = input_vector.normalized()
#새로운 속도가 0이 아닐때 "기존속도 = 새로운속도" / 새로운 속도가 0일때 "기존속도 = 0".
if input_vector != Vector2.ZERO:
velocity = input_vector [등속운동]
else:
velocity = Vector2.ZERO
#이동처리함수. 해당 파라미터의 입력값 만큼 이동시킴. 이때, 델타타임(Delta Time)과 최대 속력을 곱해준다.
move_and_collide(velocity * delta * MAX_SPEED)
[등가속운동]
#현재 노드의 타입을 상속받음.
extends KinematicBody2D
#속도변수 velocity 를 기본값으로 초기화시킴.
var velocity = Vector2.ZERO
#속력의 최댓값을 상수 100으로 고정시킴.
const MAX_SPEED = 100
#초기 가속도의 값을 상수 400으로 설정.
const ACCELERATION = 400
#상하좌우 움직일 시, 속도 3으로 움직임. 키입력 없을 시 정지상태.
func _physics_process(delta):
#새로운 속도변수 초기화.
var input_vector = Vector2.ZERO
#새로운 속도는 (오른쪽에서 왼쪽의 값을뺀 정도 / 아래에서 위를 뺀 정도) 이다.
input_vector.x = Input.get_action_strength("ui_right") - Input.get_action_strength("ui_left")
input_vector.y = Input.get_action_strength("ui_down") - Input.get_action_strength("ui_up")
#새로운 속도변수를 "단위벡터" 로 만들어 줌. "벡터의 정규화".
input_vector = input_vector.normalized()
#새로운 속도가 0이 아닐때 "기존속도 = 새로운속도" / 새로운 속도가 0일때 "기존속도 = 0".
if input_vector != Vector2.ZERO:
velocity += input_vector * ACCELERATION *delta [등가속운동]
else:
velocity = Vector2.ZERO
#이동처리함수. 해당 파라미터의 입력값 만큼 이동시킴. 이때, 델타타임(Delta Time)과 최대 속력을 곱해준다.
move_and_collide(velocity * delta)