private static CollisionInfo circleToSector(GeomBase geom1, GeomBase geom2) { GeomCircle circle = (GeomCircle)geom1; GeomSector sector = (GeomSector)geom2; GeomLine line1 = sector.line1; GeomLine line2 = sector.line2; //这个因为有需求所以就这么直接写一下了。 bool result = !(0 != sector.inRadius && sector.center.dist(circle.center) <= sector.inRadius /* + circle.radius*/) && //不能在内圆 ((line1.checkPoint(circle.center) >= 0 && line2.checkPoint(circle.center) <= 0) || //在夹角内 circleToLine(circle, line1).isHit || circleToLine(circle, line2).isHit); //或者与线相交 help.isHit = result; return(help); }
public static GeomBase createGeom(FightEntity entity, object[] datas, object[] offset = null) { GeomBase result = null; switch (datas.Length) { case 1: result = new GeomCircle(entity.map); break; case 2: result = new GeomRect(entity.map); break; case 3: case 4: result = new GeomSector(entity.map); break; } result.entity = entity; result.parseData(datas, offset); return(result); }