美文网首页程序改变世界
2D 游戏激光炮实现

2D 游戏激光炮实现

作者: 齊葩 | 来源:发表于2017-12-01 14:20 被阅读21次

1:首先需要知道起点,终点,激光宽度
2:判断所有的敌人与激光起点,终点连接起来的线段的垂直距离,如果小于激光宽度/2就说明打到了(注意敌人是有体积的)

基本没什么难点,如果有就是计算敌人与线段的垂直距离。

下面是计算距离的代码

/*********************************/  
// 如果经过点做直线的垂足,垂足落在线段上,则取垂线段的距离  
// 否则取到线段两端点距离的最小值  
//  
// 参数:  
// point:  存储点的xy坐标  
// p1, p2: 线段的两点  
//  
// return: 点到线段的最小距离  
/*********************************/  
private static double distance(Point p, Point p1) {
    return Math.hypot(p.x-p1.x, p.y-p1.y);
  }
  //点到线段的最短距离,x0,y0是圆心
  private static double pointToLine(Point p1,Point p2, Point p) {
    double ans = 0;
    double a, b, c;
    a = distance(p1, p2);
    b = distance(p1, p);
    c = distance(p2, p);
    if (c+b==a) {//点在线段上
      ans = 0;
      return ans;
    }
    if (a<=0.00001) {//不是线段,是一个点
      ans = b;
      return ans;
    }
    if (c*c >= a*a + b*b) { //组成直角三角形或钝角三角形,p1为直角或钝角
      ans = b;
      return ans;
    }
    if (b * b >= a * a + c * c) {// 组成直角三角形或钝角三角形,p2为直角或钝角
      ans = c;
      return ans;
    }
    // 组成锐角三角形,则求三角形的高
    double p0 = (a + b + c) / 2;// 半周长
    double s = Math.sqrt(p0 * (p0 - a) * (p0 - b) * (p0 - c));// 海伦公式求面积
    ans = 2*s / a;// 返回点到线的距离(利用三角形面积公式求高)
    return ans;
  }

点击这里可以看到作者的其他文章


相关文章

  • 2D 游戏激光炮实现

    1:首先需要知道起点,终点,激光宽度2:判断所有的敌人与激光起点,终点连接起来的线段的垂直距离,如果小于激光宽度/...

  • 游戏算法(1):实现AStar寻路算法

    本文从项目从2D项目寻路需求做介绍。实现了Astar的带权宽搜算法。 本文链接游戏算法(1):实现2D寻路算法[h...

  • Unity拖尾渲染你值得拥有

    在unity中我们都知道有线渲染器这个东西,因为我们要用的多,比如我们做塔防游戏,激光炮的制作,激光炮用激光来攻击...

  • Chocolate

    自带激光炮

  • Unity 2D精灵(Sprite)与2D物理组件

    Unity 2D精灵 Sprites是个用于角色、道具、炮弹以及其他2D游戏元素的二维图形对象。 2D游戏的图像部...

  • 2D物理弹球

    场景搭建:游戏属于2D游戏,所以场景我们用2D精灵(Sprite)来搭建 一.砌墙 首先搭建一圈2D碰撞器作围墙,...

  • 2D游戏场景

    创建2D游戏工程,和场景 创建2D工程 创建2D场景(场景会保存在Asset目录下面) 创建工作层 为了使游戏对象...

  • iOS 2D游戏开发学习笔记:GameplayKit

    iOS 2D游戏开发学习笔记:GameplayKit 这是我的 iOS 2D 游戏开发学习笔记,本篇学习内容来自r...

  • 3.初识OpenGLES

    iOS中基于OpenGLES的功能实现或框架 SpriteKit- 用来创建2D游戏而优化硬件加速动画系统Scen...

  • 游戏shader(6):利用法线贴图实现动态2D光照效果

    本文讲解2D游戏中,如何利用法线贴图来实现有材质特性、全角度、且受时间影响的接近真实的光照效果。 本文链接 游戏s...

网友评论

    本文标题:2D 游戏激光炮实现

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