В настоящее время я работаю над небольшой игрой в Unity, и я использую c # для своего кода.
Игра представляет собой небольшую ролевую игру, в которой вы управляете персонажем, как в играх, таких как world of warcraft или age of dragon.
Вы бегаете по маленьким картам с холмами вокруг карты.В настоящее время вы можете ходить по холмам в некоторых местах, и я хочу это остановить.
поэтому я подумал, что напишу код, в котором я получу последнюю позицию моего персонажа и текущую позицию, затем получу угол между ними, и если угол слишком велик, я заставлю игрока вернуться назад(или отключить движение вперед).
это то, что я получил за код до сих пор:
Vector3 lastPos; // last Position
Vector3 curPos; // current Position
float slopeAngle; // The angle between curPos and lastPos
void Start()
{
curPos = transform.position;
}
void FixedUpdate()
{
lastPos = curPos;
curPos = transform.position;
slopeAngle = Vector3.Angle(lastPos, curPos);
}
к сожалению, slopeAngle в основном находится между 0 и 0,04.не имеет значения, бегу я по крутой горе или просто по плоскому холму
есть идеи ?!(если есть лучшее решение, чем получение угла между двумя точками, я очень заинтересован !!):)
Спасибо за вашу помощь!