//逻辑更新 public void Update(double elapsedTime) { if (state == -1) //状态为-1的时候表示停用 { return; } time_caculate += elapsedTime; if (time_caculate - lasttime >= changeinterval) { lasttime += changeinterval; selectedindex++; //索引值前翻,顺序播放纹理 if (selectedindex >= SpritesUvs[state].Length) { selectedindex = 0; if (AniCollection.Keys.Contains(state)) { State = AniCollection[state]; } } RecTangleF rect = SpritesUvs[state][selectedindex]; if (ManySprites) { for (int i = 0; i < sprites.Length; i++) { sprites[i].SetUVs(rect.left, rect.top, rect.right, rect.bottom); } } else { sprite.SetUVs(rect.left, rect.top, rect.right, rect.bottom); } } }
public ReiMu(TextureManager texturemanager) { this.texturemanager = texturemanager; name = "ReiMu"; Texture texture = texturemanager.Get("Player2"); sprite = new Sprite(); sprite.Texture = texture; sprite.SetWidth(32); sprite.SetHeight(48); sprite.SetColor(new Color(1, 1, 1, 0.2f)); multiSprite = new MultiSprite(sprite); RecTangleF[] rects = new RecTangleF[4]; for (int i = 0; i < 4; i++) { rects[i] = new RecTangleF(0 + i * 4 * per_256, 0, 4 * per_256 + i * 4 * per_256, 6 * per_256); } multiSprite.RegeditState(0, rects); //将此rectangleF注册到0号state rects = new RecTangleF[3]; for (int i = 0; i < 3; i++) { rects[i] = new RecTangleF(i * 4 * per_256, 6 * per_256, 4 * per_256 + i * 4 * per_256, 12 * per_256); } multiSprite.RegeditState(1, rects); //将此rectangleF注册到1号state (过渡移动) rects = new RecTangleF[4]; for (int i = 0; i < 4; i++) { rects[i] = new RecTangleF(12 * per_256 + i * 4 * per_256, 6 * per_256, 12 * per_256 + 4 * per_256 + i * 4 * per_256, 12 * per_256); } multiSprite.RegeditState(2, rects); //将此rectangleF注册到2号state (移动) rects = new RecTangleF[3]; for (int i = 0; i < 3; i++) { rects[i] = new RecTangleF(4 * per_256 + i * 4 * per_256, 6 * per_256, i * 4 * per_256, 12 * per_256); } multiSprite.RegeditState(3, rects); //将此rectangleF注册到3号state (过渡移动,右) rects = new RecTangleF[4]; for (int i = 0; i < 4; i++) { rects[i] = new RecTangleF(12 * per_256 + 4 * per_256 + i * 4 * per_256, 6 * per_256, 12 * per_256 + i * 4 * per_256, 12 * per_256); } multiSprite.RegeditState(4, rects); //将此rectangleF注册到4号state (移动) multiSprite.RegeditCollection(1, 2); //将1号动画连接到2号动画上 multiSprite.RegeditCollection(3, 4); //将3号动画连接到4号动画上 multiSprite.State = 0; //将状态切换为3号state InitComponents(); }
public Yukari(TextureManager texturemanager) { name = "YuKaRi"; Texture texture = texturemanager.Get("Player2"); sprite = new Sprite(); sprite.Texture = texture; sprite.SetWidth(32); sprite.SetHeight(48); multiSprite = new MultiSprite(sprite); RecTangleF[] rects = new RecTangleF[4]; for (int i = 0; i < 4; i++) { rects[i] = new RecTangleF(4 * 4 * per_256 + i * 4 * per_256, 0, 4 * 4 * per_256 + 4 * per_256 + i * 4 * per_256, 6 * per_256); } multiSprite.RegeditState(0, rects); //将此rectangleF注册到0号state rects = new RecTangleF[3]; for (int i = 0; i < 3; i++) { rects[i] = new RecTangleF(i * 4 * per_256, 12 * per_256, 4 * per_256 + i * 4 * per_256, 18 * per_256); } multiSprite.RegeditState(1, rects); //将此rectangleF注册到1号state (过渡移动) rects = new RecTangleF[4]; for (int i = 0; i < 4; i++) { rects[i] = new RecTangleF(12 * per_256 + i * 4 * per_256, 12 * per_256, 12 * per_256 + 4 * per_256 + i * 4 * per_256, 18 * per_256); } multiSprite.RegeditState(2, rects); //将此rectangleF注册到2号state (移动) rects = new RecTangleF[3]; for (int i = 0; i < 3; i++) { rects[i] = new RecTangleF(4 * per_256 + i * 4 * per_256, 12 * per_256, i * 4 * per_256, 18 * per_256); } multiSprite.RegeditState(3, rects); //将此rectangleF注册到3号state (过渡移动,右) rects = new RecTangleF[4]; for (int i = 0; i < 4; i++) { rects[i] = new RecTangleF(12 * per_256 + 4 * per_256 + i * 4 * per_256, 12 * per_256, 12 * per_256 + i * 4 * per_256, 18 * per_256); } multiSprite.RegeditState(4, rects); //将此rectangleF注册到4号state (移动) multiSprite.RegeditCollection(1, 2); //将1号动画连接到2号动画上 multiSprite.RegeditCollection(3, 4); //将3号动画连接到4号动画上 multiSprite.State = 0; //将状态切换为0号state }
public Wriggle(TextureManager texturemanager) { name = "Wriggle"; Texture texture = texturemanager.Get("Wriggle"); sprite = new Sprite(); sprite.Texture = texture; sprite.SetWidth(32); sprite.SetHeight(42); sprite.SetColor(new Color(1, 1, 1, 0.2f)); multiSprite = new MultiSprite(sprite); float offset = 0.01f; RecTangleF[] rects = new RecTangleF[4]; for (int i = 0; i < 4; i++) { rects[i] = new RecTangleF(i * 8 * per_256, per_256, (i + 1) * 8 * per_256 - offset, 13 * per_256); } multiSprite.RegeditState(0, rects); //将此rectangleF注册到0号state rects = new RecTangleF[4]; for (int i = 0; i < 4; i++) { rects[i] = new RecTangleF(i * 8 * per_256, per_256, (i + 1) * 8 * per_256 - offset, 13 * per_256); } multiSprite.RegeditState(1, rects); //将此rectangleF注册到1号state (过渡移动) rects = new RecTangleF[4]; for (int i = 0; i < 4; i++) { rects[i] = new RecTangleF(i * 8 * per_256, per_256, (i + 1) * 8 * per_256 - offset, 13 * per_256); } multiSprite.RegeditState(2, rects); //将此rectangleF注册到2号state (移动) rects = new RecTangleF[4]; for (int i = 0; i < 4; i++) { rects[i] = new RecTangleF(i * 8 * per_256, per_256, (i + 1) * 8 * per_256 - offset, 13 * per_256); } multiSprite.RegeditState(3, rects); //将此rectangleF注册到3号state (过渡移动,右) rects = new RecTangleF[4]; for (int i = 0; i < 4; i++) { rects[i] = new RecTangleF(i * 8 * per_256, per_256, (i + 1) * 8 * per_256 - offset, 13 * per_256); } multiSprite.RegeditState(4, rects); //将此rectangleF注册到4号state (移动) multiSprite.RegeditCollection(1, 2); //将1号动画连接到2号动画上 multiSprite.RegeditCollection(3, 4); //将3号动画连接到4号动画上 multiSprite.State = 0; //将状态切换为3号state InitComponents(); }
public DarkBlueLittleSprite(TextureManager texturemanager) { name = "DarkBlueLittleSprite"; Texture texture = texturemanager.Get("enemy"); sprite = new Sprite(); sprite.Texture = texture; sprite.SetWidth(32); sprite.SetHeight(32); multiSprite = new MultiSprite(sprite); RecTangleF[] rects = new RecTangleF[4]; for (int i = 0; i < 4; i++) { rects[i] = new RecTangleF(i * 4 * per_512, 0, (i + 1) * 4 * per_512, 4 * per_512); } multiSprite.RegeditState(0, rects); //将此rectangleF注册到0号state ,表示正面状态 rects = new RecTangleF[4]; for (int i = 0; i < 4; i++) { rects[i] = new RecTangleF(i * 4 * per_512, 4 * per_512, (i + 1) * 4 * per_512, 8 * per_512); } multiSprite.RegeditState(1, rects); //将此rectangleF注册到1号state ,表示右侧渐动的状态 rects = new RecTangleF[4]; for (int i = 0; i < 4; i++) { rects[i] = new RecTangleF(i * 4 * per_512, 8 * per_512, (i + 1) * 4 * per_512, 12 * per_512); } multiSprite.RegeditState(2, rects); //将此rectangleF注册到2号state ,表示右侧移动状态 rects = new RecTangleF[4]; for (int i = 0; i < 4; i++) { rects[i] = new RecTangleF((i + 1) * 4 * per_512, 4 * per_512, i * 4 * per_512, 8 * per_512); } multiSprite.RegeditState(3, rects); //将此rectangleF注册到3号state ,表示左侧渐动的状态 rects = new RecTangleF[4]; for (int i = 0; i < 4; i++) { rects[i] = new RecTangleF((i + 1) * 4 * per_512, 8 * per_512, i * 4 * per_512, 12 * per_512); } multiSprite.RegeditState(4, rects); //将此rectangleF注册到4号state ,表示左侧移动状态 multiSprite.RegeditCollection(1, 2); //将1号动画连接到2号动画上 multiSprite.RegeditCollection(3, 4); //将3号动画连接到4号动画上 multiSprite.State = 0; //将状态切换为0号state multiSprite.changeinterval = 0.1f; }
public RedButterfly(TextureManager texturemanager, float orix, float oriy, float speed = 180) { this.speed = speed; max_distance = speed * max_percent; min_distance = speed * min_percent; sprites = new Sprite[bodycount]; positions = new Vector2D[bodycount]; multiSprites = new MultiSprite[2]; speeds = new float[bodycount]; Texture texture = texturemanager.Get("enemys1"); float percent = 1; for (int i = 0; i < bodycount; i++) { percent = (float)i / (bodycount - 1); speeds[i] = speed - percent * speed * divide_percent; percent = 1 - percent; percent *= percent; sprites[i] = new Sprite(); sprites[i].Texture = texture; sprites[i].SetWidth(percent * 32); sprites[i].SetHeight(percent * 32); sprites[i].SetUVs(0, 0, 0, 0); sprites[i].SetPosition(orix, oriy); positions[i] = new Vector2D(orix, oriy); } sprite = new Sprite(); sprite.Texture = texture; sprite.SetWidth(32); sprite.SetHeight(32); sprite.SetPosition(orix, oriy); multiSprites[1] = new MultiSprite(sprites); //身体(球),导入整个数组进入 multiSprites[1].changeinterval = 0.15f; multiSprites[0] = new MultiSprite(sprite); //头部(蝴蝶) multiSprites[0].changeinterval = 0.05f; multiSprite = multiSprites[0]; RecTangleF[] rects = new RecTangleF[4]; for (int i = 0; i < 4; i++) { rects[i] = new RecTangleF(16 * per_512 + i * per_512 * 4, 20 * per_512, 16 * per_512 + (i + 1) * 4 * per_512, 24 * per_512); } multiSprites[0].RegeditState(0, rects); rects = new RecTangleF[4]; for (int i = 0; i < 4; i++) { rects[i] = new RecTangleF(32 * per_512 + i * per_512 * 4, 20 * per_512, 32 * per_512 + (i + 1) * 4 * per_512, 24 * per_512); } multiSprites[1].RegeditState(0, rects); effect = new StartEffect_Red(Stage1State._textureManager); }
public DrakBlueSprite(TextureManager texturemanager) { Texture texture = texturemanager.Get("enemys1"); sprite = new Sprite(); sprite.Texture = texture; sprite.SetWidth(32); sprite.SetHeight(32); multiSprite = new MultiSprite(sprite); multiSprite.changeinterval = 0.15f; RecTangleF[] rects = new RecTangleF[2]; for (int i = 0; i < 2; i++) { rects[i] = new RecTangleF(i * per_512 * 4, 0, (i + 1) * 4 * per_512, 4 * per_512); } multiSprite.RegeditState(0, rects); }
public BlueButterfly(TextureManager texturemanager) { Texture texture = texturemanager.Get("enemys1"); sprite = new Sprite(); sprite.Texture = texture; sprite.SetWidth(32); sprite.SetHeight(32); multiSprite = new MultiSprite(sprite); multiSprite.changeinterval = 0.15f; RecTangleF[] rects = new RecTangleF[4]; for (int i = 0; i < 4; i++) { rects[i] = new RecTangleF(16 * per_512 + i * per_512 * 4, 16 * per_512, 16 * per_512 + (i + 1) * 4 * per_512, 20 * per_512); } multiSprite.RegeditState(0, rects); effect = new StartEffect_Red(Stage1State._textureManager); }
public DarkBlueLittleSprite(TextureManager texturemanager) { name = "DarkBlueLittleSprite"; Texture texture = texturemanager.Get("enemy"); sprite = new Sprite(); sprite.Texture = texture; sprite.SetWidth(32); sprite.SetHeight(32); multiSprite = new MultiSprite(sprite); RecTangleF[] rects = new RecTangleF[4]; for (int i = 0; i < 4; i++) rects[i] = new RecTangleF(i * 4 * per_512 , 0, (i + 1) * 4 * per_512, 4 * per_512); multiSprite.RegeditState(0, rects); //将此rectangleF注册到0号state ,表示正面状态 rects = new RecTangleF[4]; for (int i = 0; i < 4; i++) rects[i] = new RecTangleF(i * 4 * per_512, 4 * per_512, (i + 1) * 4 * per_512, 8 * per_512); multiSprite.RegeditState(1, rects); //将此rectangleF注册到1号state ,表示右侧渐动的状态 rects = new RecTangleF[4]; for (int i = 0; i < 4; i++) rects[i] = new RecTangleF(i * 4 * per_512, 8 * per_512, (i + 1) * 4 * per_512, 12 * per_512); multiSprite.RegeditState(2, rects); //将此rectangleF注册到2号state ,表示右侧移动状态 rects = new RecTangleF[4]; for (int i = 0; i < 4; i++) rects[i] = new RecTangleF((i + 1) * 4 * per_512, 4 * per_512, i * 4 * per_512, 8 * per_512); multiSprite.RegeditState(3, rects); //将此rectangleF注册到3号state ,表示左侧渐动的状态 rects = new RecTangleF[4]; for (int i = 0; i < 4; i++) rects[i] = new RecTangleF((i + 1) * 4 * per_512, 8 * per_512, i * 4 * per_512, 12 * per_512); multiSprite.RegeditState(4, rects); //将此rectangleF注册到4号state ,表示左侧移动状态 multiSprite.RegeditCollection(1, 2); //将1号动画连接到2号动画上 multiSprite.RegeditCollection(3, 4); //将3号动画连接到4号动画上 multiSprite.State = 0; //将状态切换为0号state multiSprite.changeinterval = 0.1f; }
public Yukari(TextureManager texturemanager) { name = "YuKaRi"; Texture texture = texturemanager.Get("Player2"); sprite = new Sprite(); sprite.Texture = texture; sprite.SetWidth(32); sprite.SetHeight(48); multiSprite = new MultiSprite(sprite); RecTangleF[] rects = new RecTangleF[4]; for (int i = 0; i < 4; i++) rects[i] = new RecTangleF(4 * 4 * per_256 + i * 4 * per_256, 0, 4 * 4 * per_256 + 4 * per_256 + i * 4 * per_256, 6 * per_256); multiSprite.RegeditState(0, rects); //将此rectangleF注册到0号state rects = new RecTangleF[3]; for (int i = 0; i < 3; i++) rects[i] = new RecTangleF(i * 4 * per_256, 12 * per_256, 4 * per_256 + i * 4 * per_256, 18 * per_256); multiSprite.RegeditState(1, rects); //将此rectangleF注册到1号state (过渡移动) rects = new RecTangleF[4]; for (int i = 0; i < 4; i++) rects[i] = new RecTangleF(12 * per_256 + i * 4 * per_256, 12 * per_256, 12 * per_256 + 4 * per_256 + i * 4 * per_256, 18 * per_256); multiSprite.RegeditState(2, rects); //将此rectangleF注册到2号state (移动) rects = new RecTangleF[3]; for (int i = 0; i < 3; i++) rects[i] = new RecTangleF(4 * per_256 + i * 4 * per_256, 12 * per_256, i * 4 * per_256, 18 * per_256); multiSprite.RegeditState(3, rects); //将此rectangleF注册到3号state (过渡移动,右) rects = new RecTangleF[4]; for (int i = 0; i < 4; i++) rects[i] = new RecTangleF(12 * per_256 + 4 * per_256 + i * 4 * per_256, 12 * per_256, 12 * per_256 + i * 4 * per_256, 18 * per_256); multiSprite.RegeditState(4, rects); //将此rectangleF注册到4号state (移动) multiSprite.RegeditCollection(1, 2); //将1号动画连接到2号动画上 multiSprite.RegeditCollection(3, 4); //将3号动画连接到4号动画上 multiSprite.State = 0; //将状态切换为0号state }
public Wriggle(TextureManager texturemanager) { name = "Wriggle"; Texture texture = texturemanager.Get("Wriggle"); sprite = new Sprite(); sprite.Texture = texture; sprite.SetWidth(32); sprite.SetHeight(42); sprite.SetColor(new Color(1, 1, 1, 0.2f)); multiSprite = new MultiSprite(sprite); float offset = 0.01f; RecTangleF[] rects = new RecTangleF[4]; for (int i = 0; i < 4; i++) rects[i] = new RecTangleF(i * 8 * per_256, per_256, (i + 1) * 8 * per_256 - offset, 13 * per_256); multiSprite.RegeditState(0, rects); //将此rectangleF注册到0号state rects = new RecTangleF[4]; for (int i = 0; i < 4; i++) rects[i] = new RecTangleF(i * 8 * per_256, per_256, (i + 1) * 8 * per_256 - offset, 13 * per_256); multiSprite.RegeditState(1, rects); //将此rectangleF注册到1号state (过渡移动) rects = new RecTangleF[4]; for (int i = 0; i < 4; i++) rects[i] = new RecTangleF(i * 8 * per_256, per_256, (i + 1) * 8 * per_256 - offset, 13 * per_256); multiSprite.RegeditState(2, rects); //将此rectangleF注册到2号state (移动) rects = new RecTangleF[4]; for (int i = 0; i < 4; i++) rects[i] = new RecTangleF(i * 8 * per_256, per_256, (i + 1) * 8 * per_256 - offset, 13 * per_256); multiSprite.RegeditState(3, rects); //将此rectangleF注册到3号state (过渡移动,右) rects = new RecTangleF[4]; for (int i = 0; i < 4; i++) rects[i] = new RecTangleF(i * 8 * per_256, per_256, (i + 1) * 8 * per_256 - offset, 13 * per_256); multiSprite.RegeditState(4, rects); //将此rectangleF注册到4号state (移动) multiSprite.RegeditCollection(1, 2); //将1号动画连接到2号动画上 multiSprite.RegeditCollection(3, 4); //将3号动画连接到4号动画上 multiSprite.State = 0; //将状态切换为3号state InitComponents(); }
public ReiMu(TextureManager texturemanager) { this.texturemanager = texturemanager; name = "ReiMu"; Texture texture = texturemanager.Get("Player2"); sprite = new Sprite(); sprite.Texture = texture; sprite.SetWidth(32); sprite.SetHeight(48); sprite.SetColor(new Color(1, 1, 1, 0.2f)); multiSprite = new MultiSprite(sprite); RecTangleF[] rects = new RecTangleF[4]; for (int i = 0; i < 4; i++) rects[i] = new RecTangleF(0 + i * 4 * per_256, 0, 4 * per_256 + i * 4 * per_256, 6 * per_256); multiSprite.RegeditState(0, rects); //将此rectangleF注册到0号state rects = new RecTangleF[3]; for (int i = 0; i < 3; i++) rects[i] = new RecTangleF(i * 4 * per_256, 6 * per_256, 4 * per_256 + i * 4 * per_256, 12 * per_256); multiSprite.RegeditState(1, rects); //将此rectangleF注册到1号state (过渡移动) rects = new RecTangleF[4]; for (int i = 0; i < 4; i++) rects[i] = new RecTangleF(12 * per_256 + i * 4 * per_256, 6 * per_256, 12 * per_256 + 4 * per_256 + i * 4 * per_256, 12 * per_256); multiSprite.RegeditState(2, rects); //将此rectangleF注册到2号state (移动) rects = new RecTangleF[3]; for (int i = 0; i < 3; i++) rects[i] = new RecTangleF(4 * per_256 + i * 4 * per_256, 6 * per_256, i * 4 * per_256, 12 * per_256); multiSprite.RegeditState(3, rects); //将此rectangleF注册到3号state (过渡移动,右) rects = new RecTangleF[4]; for (int i = 0; i < 4; i++) rects[i] = new RecTangleF(12 * per_256 + 4 * per_256 + i * 4 * per_256, 6 * per_256, 12 * per_256 + i * 4 * per_256, 12 * per_256); multiSprite.RegeditState(4, rects); //将此rectangleF注册到4号state (移动) multiSprite.RegeditCollection(1, 2); //将1号动画连接到2号动画上 multiSprite.RegeditCollection(3, 4); //将3号动画连接到4号动画上 multiSprite.State = 0; //将状态切换为3号state InitComponents(); }
//注册状态 public void RegeditState(int state, RecTangleF[] rect) { SpritesUvs.Add(state, rect); }
public RedButterfly(TextureManager texturemanager , float orix , float oriy, float speed =180) { this.speed = speed; max_distance = speed * max_percent; min_distance = speed * min_percent; sprites = new Sprite[bodycount]; positions = new Vector2D[bodycount]; multiSprites = new MultiSprite[2]; speeds = new float[bodycount]; Texture texture = texturemanager.Get("enemys1"); float percent = 1; for (int i = 0; i < bodycount; i++) { percent = (float)i / (bodycount-1); speeds[i] = speed - percent * speed * divide_percent; percent = 1 - percent; percent *= percent; sprites[i] = new Sprite(); sprites[i].Texture = texture; sprites[i].SetWidth(percent *32); sprites[i].SetHeight(percent * 32); sprites[i].SetUVs(0, 0, 0, 0); sprites[i].SetPosition(orix, oriy); positions[i] = new Vector2D(orix, oriy); } sprite = new Sprite(); sprite.Texture = texture; sprite.SetWidth(32); sprite.SetHeight(32); sprite.SetPosition(orix, oriy); multiSprites[1] = new MultiSprite(sprites); //身体(球),导入整个数组进入 multiSprites[1].changeinterval = 0.15f; multiSprites[0] = new MultiSprite(sprite); //头部(蝴蝶) multiSprites[0].changeinterval = 0.05f; multiSprite = multiSprites[0]; RecTangleF[] rects = new RecTangleF[4]; for (int i = 0; i < 4; i++) { rects[i] = new RecTangleF(16*per_512+ i * per_512 * 4, 20*per_512, 16 * per_512 + (i + 1) * 4 * per_512, 24 * per_512); } multiSprites[0].RegeditState(0, rects); rects = new RecTangleF[4]; for (int i = 0; i < 4; i++) { rects[i] = new RecTangleF(32 * per_512 + i * per_512 * 4, 20 * per_512, 32 * per_512 + (i + 1) * 4 * per_512, 24 * per_512); } multiSprites[1].RegeditState(0, rects); effect = new StartEffect_Red(Stage1State._textureManager); }