PDA

Просмотр полной версии : Реалистичное передвижение



NeseryozniyVET
19.02.2010, 18:53
Не секрет, что в циве юниты одинаково двигаются что по прямым линиям, что по диагоналям, чего на самом деле быть не должно. Я исправил эту несправедливость. Это делается двумя маленькими исправлениями в файле CvPlot.cpp в функции int CvPlot::movementCost(const CvUnit* pUnit, const CvPlot* pFromPlot) const
1) В самом начале добавляем[code]

NeseryozniyVET
19.02.2010, 23:30
Кстате, я тут потестил, и оказалось что число 14 (iMoveKoef = 14) лучше заменить на 15. Так будет боле правдоподобно. Несмотря на то что 14 / 10 (1,4) ближе к корню из 2 (1,4142).

NeseryozniyVET
20.02.2010, 23:30
Усовершенствованая версия
CvPlot.cpp
int CvPlot::movementCost(const CvUnit* pUnit, const CvPlot* pFromPlot) const
[code]
//VET RealMove - begin 1/1

Yorick
22.02.2010, 02:04
<div class='quotetop'>Цитата(NeseryozniyVET * 19.2.2010, 16:51) 325723</div>

Не секрет, что в циве юниты одинаково двигаются что по прямым линиям, что по диагоналям, чего на самом деле быть не должно. Я исправил эту несправедливость.
[/b]
Отлично, давно пора было. Жаль, что не смогу воспользоваться: в Цив4 не играю.

Worobjoff
30.03.2010, 16:49
Как с юнитами которые ходят на одну клетку за один ход?

NeseryozniyVET
30.03.2010, 19:15
<div class='quotetop'>Цитата(Worobjoff * 30.3.2010, 15:49) 330772</div>
Как с юнитами которые ходят на одну клетку за один ход?[/b]Для этого есть другая версия http://depositfiles.com/files/13g122q5j (с картинками). При движении по диагонали юнитам начисляются штрафные очки (смотри картинку в архиве). Если число штрафных очков превысит 60, то на следующий ход у юнита будет на 1 очко движения менше. Следовательно юниты, которые ходят на одну клетку за один ход, просто пропустят ход.