Сообщение от Дзен-трансгуманист
|
Ну, во-первых, за игрек отвечает синус, за икс - косинус. У жителей сириуса может и наоборот, но у нас тут такие правила.
|
а как же тогда должны выглядеть формулы? как ни пытался не смог разобраться. Те формулы что я написал, были взяты из исходников другой игры
Сообщение от Дзен-трансгуманист
|
Во-вторых, угадай, к чему приведет floor на единичном векторе, тем более, что он ассиметричен относительно нуля?
Если у тебя целочисленное поле координат, то сначала нужно умножать значение функции на длину вектора - затем округлять.
И так как округлять тут, исходя из логики симметрии, надо по модулю, то обычно это решается так:
value = value < 0 ? Math.ceil( value ) : Math.floor( value )
А для чисел в диапазоне [-2³¹, 2³¹-1] даже проще:
value |= 0
|
решил вообще не округлять на сервере. Только перед самой отправкой на клиент пропускаю через Math.round().