-
如果人物的X坐标大于怪物的X坐标,并且两个Y坐标相同,那怪物就在玩家的左边,其他的方向也是这样以此类推,这里就不贴代码了。
-
用数学公式先计算直线的斜率,然后计算弧度值,奈何博主(文盲)在百度一通后参考一位博主算是搞懂了,这里说一下原博主文中第一行代码使用的是
math.atan
实际运行中会有可能出现错误pos2.x - pos1.x
这里相减可能为0就会报错
所以修改为math.atan2 两种方法的区别请自行百度,在原帖中也有详细说明。
下面直接贴代码
pos2 = point(400, 100) #人物 point 是我自定义的类
pos1 = point(400, 300) #怪物
angle = math.atan2((pos2.y - pos1.y), -(pos2.x - pos1.x))
angle22d5 = math.pi / 8
angle67d5 = math.pi / 2 - angle22d5
if angle > -angle22d5 and angle <= angle22d5:
if pos1.x < pos2.x:
print(2)
else:
print(6)
elif angle > angle22d5 and angle <= angle67d5:
if pos1.x < pos2.x:
print(1)
else:
print(5)
elif angle > -angle67d5 and angle <= -angle22d5:
if pos1.x < pos2.x:
print(3)
else:
print(7)
else:
if pos1.y < pos2.y:
print(4)
else:
print(0)