/// <summary> /// 是否和人物碰撞 /// </summary> /// <returns><c>true</c>, if hitting char was ised, <c>false</c> otherwise.</returns> /// <param name="character">Character.</param> public virtual bool isHittingChar(GameCharacterBase character) { Intersection.Polygon eventCollider = character.currCollider(); if (Intersection.polygonPolygon(eventCollider, this.currCollider())) { return(true); } return(false); }
/// <summary> /// 返回面向的格子事件ID /// </summary> /// <returns></returns> public int getFaceToEventId(GameCharacterBase character) { GameEvent result = null; float step = GameTemp.gamePlayer.getStep() * 2; Intersection.Polygon testPolygon = character.currCollider(); GameCharacterBase.DIRS dir = character.direction; if (dir == GameCharacterBase.DIRS.DOWN) { testPolygon = Intersection.polygonMove(testPolygon, 0, -step); } if (dir == GameCharacterBase.DIRS.LEFT) { testPolygon = Intersection.polygonMove(testPolygon, -step, 0); } if (dir == GameCharacterBase.DIRS.RIGHT) { testPolygon = Intersection.polygonMove(testPolygon, step, 0); } if (dir == GameCharacterBase.DIRS.UP) { testPolygon = Intersection.polygonMove(testPolygon, 0, step); } List <GameEvent> events = new List <GameEvent>(); foreach (GameEvent e in this.events) { Intersection.Polygon eventCollider = e.currCollider(); if (Intersection.polygonPolygon(eventCollider, testPolygon)) { if (!e.erased && !e.Equals(character)) { events.Add(e); } } } if (events.Count > 0) { result = events[(new System.Random()).Next(events.Count)]; return(result.eventId); } return(0); }