public override void initConfig(Dictionary <string, object> data = null) { if (data.ContainsKey("speed")) { this._speed = (int)(data["speed"]); } if (data.ContainsKey("accSpeed")) { this._accSpeed = (int)(data["accSpeed"]); } if (data.ContainsKey("atk")) { this.atk = (int)(data["atk"]); } if (data.ContainsKey("aoe")) { this._aoe = (int)(data["aoe"]); } if (data.ContainsKey("lifeTime")) { this._lifeTime = (int)(data["lifeTime"]); } if (data.ContainsKey("angle")) { this._angle = Math2.angleToRadian(Convert.ToSingle(data["angle"])); } if (data.ContainsKey("seek")) { this.seekData = (Dictionary <string, object>)data["seek"]; } if (data.ContainsKey("backForce")) { this.backForce = (int)(data["backForce"]); } if (data.ContainsKey("preTime")) { this._preTime = (int)(data["preTime"]); } //bang伤害。 if (data.ContainsKey("bangCount")) { this.bangCount = (int)(data["bangCount"]); } if (data.ContainsKey("bangRadiusMax")) { this.bangRadiusMax = (int)(data["bangRadiusMax"]); } if (data.ContainsKey("bangRateMax")) { this.bangRateMax = Convert.ToDouble(data["bangRateMax"]); } if (data.ContainsKey("bangRadiusMin")) { this.bangRadiusMin = (int)(data["bangRadiusMin"]); } if (data.ContainsKey("bangRateMin")) { this.bangRateMin = Convert.ToDouble(data["bangRateMin"]); } //zoom增幅。 if (data.ContainsKey("zoomCount")) { this.zoomCount = (int)(data["zoomCount"]); } if (data.ContainsKey("zoomRadius")) { this.zoomRadius = (int)(data["zoomRadius"]); } if (data.ContainsKey("zoomDamage")) { this.zoomDamage = (int)(data["zoomDamage"]); } if (data.ContainsKey("zoomStun")) { this.zoomStun = (int)(data["zoomStun"]); } //检查障碍物。 this.checkBarrier = Utils.equal(data, "checkBarrier", 1); this._repeat = Utils.equal(data, "repeat", 1); if (null != seekData) { this.seekRange = Collision.createGeom(this, (object[])this.seekData["range"], (object[])this.seekData["offset"]); } this.atk = Mathf.CeilToInt(Convert.ToSingle(this.owner.getProperty(ConfigConstant.PROPERTY_ATK_RATE) * this.atk)); this._shape = Collision.createGeom(this, (object[])data["range"]); if (this.zoomRadius != 0) { this.zoomScale = Convert.ToDouble(this.zoomRadius) / this._shape.radius; } if (data.ContainsKey("offset")) { Vector2D offset = Vector2D.createVector3((object[])data["offset"]); offset.angle += this.owner.angle; this._position.add(offset); offset.clear(); } if (data.ContainsKey("reactionForce")) { this.owner.velocity.length = 1; this.owner.addForce(Vector2D.createVector2(Convert.ToSingle(data["reactionForce"]), Math.PI + this.owner.angle)); } this.id = ""; this.ownerPlayer = this.owner.ownerPlayer; this.isFree = !Utils.equal(data, "posTarget", 1); PersonEntity target = this.isFree ? this.owner : this.lockTarget; this._angle += target.angle; this._position.add(target.position); //根据飞船大小 偏移。 if (data.ContainsKey("offsetType") && (int)data["offsetType"] != 0) { Vector2D v = target.getVertexPosition((int)data["offsetType"]).clone(); v.angle += target.angle; this._position.add(v); v.clear(); } this._velocity.length = this._speed; this._velocity.angle = this._angle; this.changeDir(); //TODO:优化修改。 this.applyPosition(); //hitCd if (data.ContainsKey("hitCDMax")) { if (0 != (int)data["hitCDMax"]) { this._hitAction = new IntervalAction(this._map).init((int)data["hitCDMax"], this._lifeTime, this.checkHit); } } else { this._hitAction = new IntervalAction(this._map).init(66 * 2, this._lifeTime, this.checkHit); } if (data.ContainsKey("bangCDMax")) { this._bombAction = new IntervalAction(this._map).init((int)data["bangCDMax"], this._lifeTime, this.bomb); } base.initConfig(data); }