对于你们来说,我的问题可能很简单,我只是编程的新手,所以是的。
我想在屏幕的中心有一个圆圈,然后我希望当玩家靠近它时,他会被推开,因为他来自的方向, 这是我做的一个小图,更清晰
红色圆圈是来自不同方向的玩家, 绿色圆圈是障碍。 箭头表示玩家应该向哪个方向推进 玩家仅在x,y轴上移动
非常感谢你的时间
答案 0 :(得分:0)
将笛卡尔式屏幕系统中的玩家坐标(红色圆圈中心)转换为中心障碍物(绿色圆圈)的原点。
为此目的选择复数可能是一个解决方案:b
。给出对象的半径和公差半径('接近')。
迭代玩家坐标并比较它们的大小(红色圆心与原点的距离)。当距离大于其半径+公差的总和时,它们不被认为是接近的。否则调整幅度。将输出坐标转换回屏幕会产生结果。
return a.Equals(b) ? a : Math.Min(a, b);