이러한 경로는 상대 좌표로 일련의 선분으로 인코딩 할 수 있습니다. 당신은 같은 경로를 원하는 가정 :
|
\ _
각 라인은 10 픽셀입니다. 당신은 단지 중간 점을 찾기 위해 시간 추정을 사용하여 다음
[
{"start_x":0,"start_y":0,"stop_x":0,"stop_y":10,"duration":2},
{"start_x":0,"start_y":10,"stop_x":10,"stop_y":20,"duration":3},
{"start_x":10,"start_y":20,"stop_x":20,"stop_y":20,"duration":2}
]
: (이 세그먼트를 통과하기 위해 수행해야 초 (밀리 초)을 나타 내기 위해 시간에) 당신은 라인 세그먼트의 자바 스크립트 배열로 그를 인코딩 할 수 세그먼트의 시작과 세그먼트의 끝 사이. 현재의 오프셋 (offset)는 다음과 같습니다
ELAPSED_TIME 당신이 세그먼트를 시작한 이후의 시간입니다
var pct_complete = elapsed_time/line_segment.duration,
x_diff = (line_segment.stop_x - line_segment.start_x),
y_diff = (line_segment.stop_y - line_segment.start_y),
render_x = line_segment.start_x + (x_diff * pct_complete),
render_y = line_segment.start_y + (y_diff * pct_complete);
. 앞서 언급했듯이 상대 좌표를 사용하면 render_x/y를 월드의 경로 위치와 화면 오프셋으로 조정해야합니다.
더 부드러운 선을 사용하려면 더 작은 선분을 사용하십시오.
대부분의 경로 검색 (게임에서)은 A * 또는 그 파생어를 사용합니다. 하지만 Canvas와는 아무런 관련이 없습니다. 그래서 그것이 당신이 찾고있는 것인지 확신 할 수 없습니다. –
나는 Astar 경로를 이전에 찾던 것으로 만들었습니다. 비 블록 또는 선형 경로를 따라 이동합니다. 나는 youtube 비디오를 발견 할 것이다. 시도해 줘서 고마워. 스프라이트가지도상의 경로를 따라 걷기 때문에 Canvas와 관련이 있습니다. 경로는 위의 이미지에 표시됩니다. – Iscariot
A *는 가중치가있는 노드가있는 노드의 네트워크에서 경로를 찾습니다 (용어가 잘못되어 있으면 누군가 나를 수정합니다). 길이에 따른 연결의 무게를 측정하면 최상의 경로를 찾을 수 있어야합니다. 왜 네가 왜 안되는 거지? –