Vector2D direction = new Vector2D(); //运动方向 public MissPoint(TextureManager texturemanager, double X, double Y, Vector2D dir, int score = 100) { //确定类型 this.Type = Item.Miss_Point; working = true; //确定弹射范围 Position.X = X; Position.Y = Y; if (dir.Y < 0) { dir.Y = -dir.Y; } if (dir.X >= 0) { double rad = dir.GetAngle(); if (rad > 60) { rad = 60; } direction = new Vector2D(0, 1); direction.rotate((float)(Datas.LooselyRandom.NextDouble() * (rad - 2 * randDomain) + randDomain)); } else { double rad = dir.GetAngle(); rad = 360 - rad; if (rad > 60) { rad = 60; } direction = new Vector2D(0, 1); direction.rotate(-((float)(Datas.LooselyRandom.NextDouble() * (rad - 2 * randDomain) + randDomain))); } speed_right = speed_totle * direction.X; speed_up = speed_totle * direction.Y; double offset_x = Center_Distance * direction.X; double offset_y = Center_Distance * direction.Y; Position.X += offset_x; Position.Y += offset_y; offset_x = Datas.LooselyRandom.NextDouble() * 2 * randFireDomain - randFireDomain; Position.X += offset_x; Texture texture = texturemanager.Get("Ef_etama2"); sprite = new Sprite(); sprite.Texture = texture; sprite.SetHeight(16); sprite.SetWidth(16); sprite.SetUVs(14 * per_256, 8 * per_256, 16 * per_256, 10 * per_256); //保存了MissPoint的一些必要信息 ItemData = new itemdata.MissPoint(score, 3); }
public MissPoint(TextureManager texturemanager, double X, double Y,Vector2D dir,int score = 100) { //确定类型 this.Type = Item.Miss_Point; working = true; //确定弹射范围 Position.X = X; Position.Y = Y; if (dir.Y < 0) dir.Y = -dir.Y; if (dir.X >= 0) { double rad = dir.GetAngle(); if (rad > 60) rad = 60; direction = new Vector2D(0, 1); direction.rotate((float)(Datas.LooselyRandom.NextDouble() * (rad - 2*randDomain) + randDomain)); } else { double rad = dir.GetAngle(); rad = 360 - rad; if (rad > 60) rad = 60; direction = new Vector2D(0, 1); direction.rotate(-((float)(Datas.LooselyRandom.NextDouble() * (rad - 2 * randDomain) + randDomain))); } speed_right = speed_totle * direction.X; speed_up = speed_totle * direction.Y; double offset_x = Center_Distance * direction.X; double offset_y = Center_Distance * direction.Y; Position.X += offset_x; Position.Y += offset_y; offset_x = Datas.LooselyRandom.NextDouble() * 2 *randFireDomain - randFireDomain; Position.X += offset_x; Texture texture = texturemanager.Get("Ef_etama2"); sprite = new Sprite(); sprite.Texture = texture; sprite.SetHeight(16); sprite.SetWidth(16); sprite.SetUVs(14 * per_256, 8 * per_256, 16 * per_256, 10 * per_256); //保存了MissPoint的一些必要信息 ItemData = new itemdata.MissPoint(score,3); }