首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

WPF/Silverlight 遊戲開發教程(三十一之二):激光魔法傷害範圍判斷與多邊形碰撞

     編輯:關於C語言

激光魔法屬矩形直線穿梭類型,傷害計算特殊。點擊 B 點,激光從主角手部 A 發出,計算 A-B 角度旋轉激光,傷害範圍為不規則矩形:

已知 A、B 座標與激光長度,可算出 4 頂點座標,使用 System.Drawing 判斷精靈是否在多邊形內:

public static bool PointInPolygon(System.Drawing.Point[] range, System.Drawing.Point target)
{
    System.Drawing.Drawing2D.GraphicsPath myGraphicsPath = new System.Drawing.Drawing2D.GraphicsPath();
    System.Drawing.Region myRegion = new System.Drawing.Region();
    myGraphicsPath.Reset();
    myGraphicsPath.AddPolygon(range);
    myRegion.MakeEmpty();
    myRegion.Union(myGraphicsPath);
    return myRegion.IsVisible(target);
}

此法可擴展至任意多邊形(閉合/不閉合),所有範圍攻擊魔法均適用。下節將展示矢量魔法的萬變特效。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved