250x250
기리도
기리도의 개발새발 개발 일지
기리도
전체 방문자
오늘
어제
  • 분류 전체보기 (44)
    • Unity (6)
      • 모듈식 프로그래밍 (1)
    • C# (10)
    • 자료구조,알고리즘 (2)
    • 운영체제 (10)
      • 공룡책 (3)
      • 그림으로 쉽게 배우는 운영체제(인프런 강의) (7)
    • 리팩토링 (1)
    • 네트워크 (13)
      • 네트워크 장비 (13)
    • C, C++ 문법 (1)
      • 기타 (0)
      • C (1)
      • C++ (0)
    • 디자인 패턴 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 개발
  • 게임개발
  • 탄환
  • 개발공부
  • 유니티
  • 스위치
  • 공부
  • 알고리즘
  • 브릿지
  • Unity
  • 통신
  • C#
  • 운영체제
  • 네트워킹
  • 네트워크
  • 길찾기
  • 프로그래밍
  • OS
  • 인프런
  • 네트워크 게임

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
기리도

기리도의 개발새발 개발 일지

Unity

탄환의 속도

2022. 2. 4. 17:01
728x90

플레이어의 좌표 P(px, py)와 적의 좌표 E(ex, ey)이 주어졌을 때 E을 향해 날아가는 탄환이 있다고 하자. 출발 후 n번 후에 E에 도착한다고 했을 때 탄환의 벡터 B(bx, by)는 다음과 같이 표현할 수 있다.

 

bx = (ex - px)/n

by = (ey - py)/n

 

그러나 이 방법을 사용할 시 플레이어와 적의 위치가 변함에 따라 탄환의 속도도 함께 변하는 문제가 있다. 이를 해결하려면 플레이어와 적의 거리를 구해주어야 한다.

 

적과 플레이어의 거리 d 를 구하는 공식은 d = math.sqrt((ex - px)^2 + (ey - py)^2)이며 피타고라스 정리에서 도출된 식이다. 여기서 math.sprt는 제곱근을 반환하는 C#의 메서드이다.

 

이제 이렇게 구한 d를 n 대신 넣어주고 bx와 by에 speed를 곱해주면 플레이어와 적의 위치랑 상관없이 탄환이 일정한 속도(speed)로 날아가게 된다.

 

(단, 만약 플레이어와 적의 위치가 똑같다면 탄환이 발사되지 않게 하는 등 예외 처리를 해주어야 한다)

728x90

'Unity' 카테고리의 다른 글

[Unity]이벤트(Event)로 키 입력 관리하기  (0) 2022.06.16
NCMB를 이용한 네트워크 구현2  (0) 2022.02.25
NCMB를 이용한 유니티 네트워크 구현하기  (0) 2022.02.23
방향탄  (0) 2022.02.11
    'Unity' 카테고리의 다른 글
    • [Unity]이벤트(Event)로 키 입력 관리하기
    • NCMB를 이용한 네트워크 구현2
    • NCMB를 이용한 유니티 네트워크 구현하기
    • 방향탄
    기리도
    기리도
    공부한 내용을 정리해서 올리는 블로그입니다.

    티스토리툴바