浪子終回頭 2022-07-04 19:49 采纳率: 75%
浏览 52
已结题

游戏开发 玩家移动到怪物背后 如何获取背后坐标

img

看图 由右上图示例:

  1. 中心蓝色为玩家,怪物可以为360度任意方向
  2. 右上圆心的蓝色为怪物
  3. 玩家需要移动到怪物背后的红色区域的大圆位置,位置与圆相交,不在圆内或圆外
  4. 移动位置可以为 包含不限于 ABC 的任意角度

已知数据:

  1. 玩家坐标
  2. 怪物坐标

可变数据:

  1. 怪物外圆半径,此半径用于移动后距离怪物的距离
  2. 移动到怪物后方的角度,比如正后方B点(假设为0度), A点(假设为45度) C点(假设为-40度)

如何根据已知数据,获取ABC的坐标,

帮忙看下,给个思路,谢谢

  • 写回答

1条回答 默认 最新

  • 於黾 2022-07-05 00:13
    关注

    用怪物坐标减去玩家坐标,得到一个向量
    向量的y值比x值求反tan就是角度
    然后根据到底是A还是C,加上或减去一个角度,假设角度是a
    现在问题就是求从怪物坐标出发,角a的射线与怪物圆相交的交点
    圆方程是(x-x0)^2+(y-y0)^2=r^2
    射线方程是y-y0=k(x-x0),k=tan(a)
    其中x0,y0是怪物坐标
    联合一下,把2带入1,即可求得x,y

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    浪子終回頭 2022-07-05 01:48

    联合一下,把2带入1,即可求得x,y : 这个搞不明白怎么带入....大佬说下吧

    向量的y值比x值求反tan就是角度: 这个是不是这样的

    #define PI 3.14159258
    float 角度 = atan(向量y / 向量x) * 180 / PI;

    回复
    於黾 回复 浪子終回頭 2022-07-05 01:50

    y=tan(a)(x-x0)+y0,带入1
    (x-x0)^2+(tan(a)(x-x0)+y0-y0)^2=r^2
    这里只有x了,二次方程有通解,直接解就行了

    回复
    於黾 回复 浪子終回頭 2022-07-05 01:51

    float 角度 = atan(向量y / 向量x) * 180 / PI;
    这里要先判断x不为0,否则会发生除0错误,如果x是0,角度就是90度

    回复
    展开全部7条评论
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 7月13日
  • 已采纳回答 7月5日
  • 创建了问题 7月4日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部