/// <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); }
/// <summary> /// 返回主角面向的确认键启动格子事件 /// </summary> /// <returns></returns> public GameEvent getPlayerFaceToConfirmEvent() { GameEvent result = null; float step = GameTemp.gamePlayer.getStep() * 2; Intersection.Polygon testPolygon = GameTemp.gamePlayer.currCollider(); GameCharacterBase.DIRS dir = GameTemp.gamePlayer.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.priorityType == GameCharacterBase.PRIORITIES.SAME) { events.Add(e); } } } if (events.Count > 0) { result = events[(new System.Random()).Next(events.Count)]; } return(result); }
/// <summary> /// 根据图像修改行走图配置 /// </summary> /// <param name="direction">方向</param> /// <param name="pattern">踏步图序号</param> /// <param name="isNew">是否是新图案</param> private void changeBitmap(GameCharacterBase.DIRS direction, int pattern, bool isNew = false) { SpriteRenderer sr = this.transform.GetComponent <SpriteRenderer>(); if (isNew) { string path = string.Format("graphics/character/{0}", this.character.characterName); this.sprites = Resources.LoadAll <Sprite>(path); } int index = ((int)direction / 2 - 1) * 3 + (pattern % 3); if ("".Equals(this.character.characterName)) { sr.sprite = null; } else { sr.sprite = this.sprites[index]; } }