Показать сообщение отдельно
Старый 15.01.2015, 14:09   #5
Nex
Гигант индустрии
 
Аватар для Nex
 
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений
(для 3,298 пользователей)
Ответ: Передвижение по сетке

В AStar примере для Блитза есть такая функция:
Function MoveUnit(unit.unit)
	;Move the unit
	xVector# = unit\xPath-unit\xLoc
	yVector# = unit\yPath-unit\yLoc	
	angle# = ATan2(yVector#,xVector#)
	xSpeed# = Cos(angle)*unit\speed
	ySpeed# = Sin(angle)*unit\speed	
	If Abs(unit\xLoc - unit\xPath) < Abs(xSpeed)
		unit\xLoc = unit\xPath	
	Else	
		unit\xLoc = unit\xLoc + xSpeed 
	End If
	If Abs(unit\yLoc - unit\yPath) < Abs(ySpeed)
		unit\yLoc = unit\yPath
	Else										
		unit\yLoc = unit\yLoc + ySpeed	
	End If
	
End Function
Которая двигает объект по клеткам.
xPath и yPath это клетка на которую нужно передвинуться
xLoc и yLoc это клетка на которой находится объект (или наоборот. не помню уже)
unit\speed это скорость.
(Offline)
 
Ответить с цитированием