使用 Item,ItemManager 在 XNA 中创建物品和道具(十六)
使用 Item,ItemManager 在 XNA 中创建物品和道具(十六)
平方已经开发了一些 Windows Phone 上的一些游戏,算不上什么技术大牛。在这里分享一下经验,仅为了和各位朋友交流经验。平方会逐步将自己编写的类上传到托管项目中,没有什么好名字,就叫 WPXNA 吧,最后请高手绕道而行吧,以免浪费时间。(为了突出重点和减少篇幅,有些示例代码可能不够严谨。)
物品
玩家可以在游戏中获得各种物品,这样我们创建了一个新的类,用来表示物品。Item 类继承自 Spirit 类,他的很多内容和 Bullet 是类似的。
Item ( IPlayScene scene, type, Vector2 location, movieName, speed, angle, HitArea hitArea, width, height, destroySecond, isAreaLimited, isAreaEntered, areaSecond, .isAutoPick =.isMoving = .Location.X += .Location.Y += .Location - .xSpeed = Calculator.Cos ( .angle ) * .ySpeed = Calculator.Sin ( .angle ) *
字段 isAutoPick 用来表示物品是否可以被自动拾取,不过目前并没有实现这个效果。方法 updateSpeed 用来根据字段 speed 来计算出 xSpeed 和 ySpeed。
至于其他的成员,大家可以参照 Bullet 类的解释。
物品管理器
ItemManager 类派生自类 SpiritManager<T>,默认的绘制顺序是 -1000。
事件 Picked 用来通知外界,物品已经被拾起,这时外界可以完成各种工作,比如:让玩家的生命值增加。
至于其他的成员,大家可以参照 BulletManager 类的解释。
<Item> EventHandler<HitAreaEventArgs> EventHandler<SpiritEventArgs> ( - ItemManager ( ( == ( Item item ( !== ( != .Picked ( item,
示例
场景 SceneT17 是 SceneT16 的扩展,在 SceneT16 中,我们让子弹击中了小鸟,而在 SceneT17 中,我们还会创建物品,这些物品可以增加小鸟的生命值。
首先,我们修改了 Bird 类的 life 字段,将他给为可以被外界访问的。
Life = }
然后,我们定义了 MyItem 类,他就是新的物品,可以增加小鸟的生命值。
MyItem ( IPlayScene scene, Vector2 location, ( scene, , location, , SingleRectangleHitArea ( Rectangle ( -, -, , ,
我们创建了新的 ItemManager,并设置了他的 HitTesting 和 Picked 事件。
在 itemHitTesting 方法中,我们将测试物品是否和小鸟发生了碰撞。在 itemPicked 方法中,我们为小鸟增加了生命值。
( Vector2.Zero, GestureType.None, Resource ( , ResourceType.Image, Resource ( , ResourceType.Image, Resource ( , ResourceType.Image, Resource ( , ResourceType.Image, Movie ( , , , , , MovieSequence ( , , Point ( , ), Point ( , Movie ( , , , , , MovieSequence ( , Point ( , Movie ( , , , , , MovieSequence ( , Point ( , Button ( , , , Vector2 ( , ), , , Point ( , .itemManager = .itemManager.Scene = .itemManager.HitTesting += .itemManager.Picked += itemHitTesting ( ( !.bird.IsDied && e.HitArea.HitTest ( = itemPicked ( .bird.Life++, }
最后,在点击按钮时,我们创建了物品。
goButtonSelected ( .bulletManager.Append ( MyBullet ( , Vector2 ( , ), .itemManager.Append ( MyItem ( , Vector2 ( , ),
本期视频 http://v.youku.com/v_show/id_XNTg3NzE2ODA0.html
项目地址 http://wp-xna.googlecode.com/
更多内容 WPXNA
平方开发的游戏 http://zoyobar.lofter.com/
QQ 群 213685539
欢迎访问我在其它位置发布的同一文章:http://www.wpgame.info/post/decc4_79f703
用户评论