Re: Гравитация
собрал через AlignToVector
для упрощения координаты планеты 0,0,0
dx#=EntityX(player,1)
dy#=EntityY(player,1)
dz#=EntityZ(player,1)
ln#=Sqr(dx*dx+dy*dy+dz*dz)
dx=dx/ln
dy=dy/ln
dz=dz/ln
AlignToVector player,dx,dy,dz,2,1
Теперь работает как надо, но есть две проблемы.
1) игрока тянет к полюсам, иду я к примеру от одного полюса к другому, до экватора игрок замедляется, а после ускоряет ход.
2) такая фишка как Collisions tplayer,tplanet,2,3 - "защита от скольжения вниз" не действует. Походу этот самый "вниз" глобальный, а нужно чтобы проверка была по локальной оси Y игрока. В итоге игрок скольэит так, если бы я писал Collisions tplayer,tplanet,2,2, особенно это заметно на рельефной местности.
пробовал так
If EntityCollided(player,tplanet) ClearCollisions():Collisions tplayer,tplanet,2,1
If move ClearCollisions():Collisions tplayer,tplanet,2,3
но думаю это не выход т.к. могут быть еще сторонние коллизии, не относящиеся к игроку (пуля-бот к примеру) а ClearCollisions() стирает все, но без нее нельзя применить новые установки.
еще записывал координаты игрока до UpdateWorld а потом после и вычислял разницу. И если игрок скользил сам, (работа коллизии) то получалось некоторое значение отличное от нуля, но так до ума это дело не довел.
|