protected void createBarrier() { object[] barriers = (object[])ConfigConstant.combat["barrier"]; int fixedNum = null == this.mapData.barriers ? 0 : this.mapData.barriers.Length; for (int i = 0, len = this.mapData.barrierCount; i < len; i++) { BarrierEntity barrier = (BarrierEntity)this.createFightEntity(ConfigConstant.ENTITY_BARRIER); int index = -1; if (i < fixedNum) { object[] barrierInfo = (object[])this.mapData.barriers[i]; index = (int)barrierInfo[2]; barrier.position.copy(Vector2D.createVector((int)barrierInfo[0], (int)barrierInfo[1])); } else { index = (int)this.getRandomRange(0, barriers.Length); barrier.position.copy(barrier.createBirthPosition()); } barrier.id = "barrier" + index; barrier.initConfig((Dictionary <string, object>)barriers[index]); } }
public void createBirthGrids() { for (int j = 0; j < this.rowNum; j++) { for (int i = this.colNum - 1; i >= 0; i--) { Grid grid = this.birthPlayerGrids[j][i]; //倒叙移除掉有障碍物的格子。 因为障碍物从此就不用了! if (grid.hasBirthEntity(ConfigConstant.ENTITY_BARRIER)) { this.birthPlayerGrids[j].RemoveAt(i); } } } //重新生成小的障碍物。 给item用! for (int i = 0, len = this.map.others.Count; i < len; i++) { BarrierEntity entity = this.map.others[i] as BarrierEntity; if (null != entity) { entity.generateBirthGrids(-1); } } for (int j = 0; j < this.rowNum; j++) { for (int i = this.colNum - 1; i >= 0; i--) { Grid grid = this.birthBeanGrids[j][i]; //倒叙移除掉有障碍物的格子。 因为障碍物从此就不用了! if (grid.hasBirthEntity(ConfigConstant.ENTITY_BARRIER)) { this.birthBeanGrids[j].RemoveAt(i); } } } }
public override FightEntity createFightEntity(int type, int netId = -1) { FightEntity entity = null; switch (type) { case ConfigConstant.ENTITY_LOOP_BEAN: // entity = new LoopBeanEntity(this); break; case ConfigConstant.ENTITY_PLAYER: entity = new PlayerEntity(this); break; case ConfigConstant.ENTITY_BULLET: entity = new BulletEntity(this); break; case ConfigConstant.ENTITY_PRICE_BEAN: entity = new PriceBeanEntity(this); break; case ConfigConstant.ENTITY_CALL: entity = new CallEntity(this); break; case ConfigConstant.ENTITY_BARRIER: entity = new BarrierEntity(this); break; case ConfigConstant.ENTITY_RADISH: entity = new RadishEntity(this); break; } return(entity); }
public void checkBarrier() { //相对位置 List <FightEntity> entitys = this._map.getFightEntitysByRange(this._shape, new List <int>() { ConfigConstant.ENTITY_BARRIER }, null, -1); for (int i = 0, len = entitys.Count; i < len; i++) { BarrierEntity barrier = (BarrierEntity)entitys[i]; CollisionInfo info = Collision.checkCollision(barrier.shape, this._shape, this._map.mapData); if (info.isHit) { Vector2D deltaPos = info.deltaPos; double radius = this._shape.radius + barrier.shape.radius; //把萝卜向外推,越中心越强 double rate = 1 - Math2.range(info.dist / radius, 1, 0); deltaPos.length = deltaPos.length * rate * 0.4; this.addForce(deltaPos); barrier.dispatchEventWith(EventConstant.HIT); } } }