跳一跳

作者: Luxin23 | 来源:发表于2018-03-03 15:40 被阅读146次

    最近我们也做了一个跳一跳的小游戏。

    我们的跳一跳是多人联网一同比赛的。

    这个跳的过程我们是由服务器来做的。

    跳一跳

    如图,我们的平台大小各不同。我们知道玩家当前的位置和玩家要跳跃的距离,根据这个我们要求出玩家的目标点。为了尽可能的跳到下一个平台上,所以我们需要朝着下一个平台的中心点跳,这里用到了方向向量的概念。

    如果我们把玩家的位置坐标表示为{x0, y0},下一个平台的中心坐标为{x1,y1}。玩家跳跃距离为Len

    那么我们计算玩家的的目标位置:

    get_e(X0, Y0, X1, Y1) ->
      X2 = X0 - X1,
      Y2 = Y0 - Y1,
      math:sqrt(X2 * X2 + Y2 * Y2).
    
    get_e_x_y(X0, Y0, X1, Y1) ->
      E = get_e(X0, Y0, X1, Y1) ,
      XX = X1 - X0,
      YY = Y1 - Y0,
      case E =:= 0 of
          true -> {0, 0};
          _ -> {XX / E, YY / E}
      end.
    
    get_x_y(Len, X0, Y0, X1, Y1) ->
      {X2, Y2} = get_e_x_y(X0, Y0, X1, Y1),
      X = X0 + Len * X2,
      Y = Y0 + Len * Y2,
      {X, Y}.
    
    

    计算出玩家跳跃后的目标点,我们要判断玩家是否有落在下一个平台上或者是落在当前平台上,这个就比较简单了。直接计算出玩家跳跃后的点与两个平台中心点的距离,如果小于两个平台的半径,表示它落在了平台上,反之没有在平台上。

    这个应该还算是简单。

    架构

    这个有点类似LOL。不过我只有两个进程

    匹配进程 -> 比赛进程。

    玩家首选进入到匹配进程,由匹配进程进行匹配,挑选出合适的玩家,然后新起一个比赛进程,以后这些玩家都和这个比赛进程通讯。由比赛进程完成当场比赛的所有工作,比赛结束,这个比赛进程当然也就被回收掉啦。

    最后,我觉得这个游戏不好玩啊......好无聊

    相关文章

      网友评论

        本文标题:跳一跳

        本文链接:https://www.haomeiwen.com/subject/xqwtfftx.html