欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > 内容正文

使用 Item,ItemManager 在 XNA 中创建物品和道具(十六)

来源: 开发者 投稿于  被查看 46950 次 评论:287

使用 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



 

相关频道:

用户评论