【发布时间】:2018-05-10 16:26:39
【问题描述】:
我目前正在 Unity 中开发一个小游戏,我使用 c# 编写代码。
该游戏是一款小型角色扮演游戏,您可以像在魔兽世界或龙腾世纪等游戏中一样控制角色。
你在小地图上跑来跑去,地图周围有山丘。目前,您可以在某些地方步行上山,我想阻止这种情况。
所以我想我写了一个代码来获取我的角色的最后位置和当前位置,而不是我得到它们之间的角度,如果角度太高,我会强制玩家返回(或禁用向前进)。
这是到目前为止我得到的代码:
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 之间。无论我是跑上陡峭的山还是平山都没有关系。
有什么想法吗?! (如果有更好的解决方案,比得到两点之间的角度,我很感兴趣!!):)
感谢您的帮助!
【问题讨论】:
-
id 建议在应用移动之前仅使用当前点和下一个点的高度差(z 轴)。如果你需要根据角度来计算,你可以用三角函数将你的向前运动和所需的角度转换成高度
-
我现在尝试使用 y 位置以及最后位置和当前位置之间的差异,到目前为止它对我有用!