cocos2d-x游戏实例(19)-纵版射击游戏(6)

原创 2012年03月24日 22:05:27

小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man

上一篇的实例中,纵版射击游戏中加入了敌人对子弹的碰撞和爆炸特效,本篇内容将给敌人加入贝塞尔曲线的运动轨迹并且敌人会“源源不断”的出现。首先还是看一下效果图:

                                                             

其实从简单的图片上看不出我的敌人运动轨迹上的改变,这里我采用了CCAction中的贝塞尔曲线运动轨迹;贝塞尔曲线,又称贝慈曲线或贝济埃曲线,是应用于二维图形应用程序的数学曲线。 在我看起来他的运动曲线比较像一个周期的正弦或余弦曲线(就是表现上比较像)。

首先来看初始化敌人的代码:


这里首先定义一个ccBezierConfig变量bezier并初始化它,首先是定义它的两个“控制点”,这两个控制点和我们的敌机走出的轨迹的“波峰”和“波谷”有关,程序中需要的这个贝塞尔曲线就像是正弦曲线旋转90度一样,所以我将controlPoint_1的横坐标向左移动,它的波谷就会向左移,相应的,我们把controlPoint_2向右移动,那么它的波峰会向右移动,然后定义整个贝塞尔曲线的终点。之后我们使用ccBezierConfig定义一个CCBezierToCCBezierTo是贝塞尔到达指定的点,而CCBezierBy则是贝塞尔曲线到达指定距离。也就是说如果你定义的是CCBezierBy,那么之前定义的控制点和终点都是与当前点的差值,也就是距离。第一个参数是时间,第二个参数就是我们之前定义的ccBezierConfig。

然后就是敌人死亡或者出屏之后的“重生”,我们首先为GameEnemy类加入一个restart函数,这个函数会在敌人重生时调用:


重新定义敌人的重生位置,将敌人变为可显示,然后为敌人加入贝塞尔曲线的逻辑。

在把敌人设置为死亡时,我们也要多做一些操作,来看setDead函数:


我们要停掉当前的动作,将主角设置为不可见。然后我们在主场景类中调用schedule(schedule_selector(MapScene::enemyrestart), 2.0f);让在2.0s后调用enemyrestart

函数,在函数中调用敌人的restart函数,让敌人“重生”。


另外,我们在敌人的逻辑函数中判断敌人是否已经出屏,若出屏则停掉所有动作,并调用敌人的“重生”函数restart。这样敌人就会“源源不断”的出现了。

如有错误之处,希望大家多多指正

下一篇继续纵版射击游戏实例


版权声明:本文为博主原创文章,未经博主允许不得转载。

cocos2d-x游戏实例(19)-纵版射击游戏(6)

小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man 上一篇的实例中,纵版射击游戏中加...
  • liujiayu2
  • liujiayu2
  • 2015年07月16日 15:12
  • 336

我的Unity 3D之旅——第一人称射击游戏(5)

六、UI界面 在进一步改进主角和敌人的脚本之前,我们需要创建一个游戏管理器来管理游戏中的事件和UI界面的显示。 在Unity脚本中,可以使用OnGUI方法绘制简单的UI,但是这样做在编写脚本的同时...
  • qq_26621551
  • qq_26621551
  • 2016年08月11日 15:51
  • 846

Unity3D官方案例--太空射击游戏总结

最近一段时间萌生了做游戏的想法,便一发不可收拾,忙活了好几天,终于跟着网上的教程做了一个太空射击的FPS游戏,想着应该好好总结一下,对于我这种刚接触游戏的小白来说,这个入门的项目还是可以学到很多东西的...
  • qq792326645
  • qq792326645
  • 2015年08月25日 18:13
  • 1939

对一个H5射击小游戏的算法理解

导言这是一个初学者通过一个h5小游戏教程中出现的一些算法包括(对象池,脏矩形绘制,四叉树的2D碰撞检测)进行一个简单介绍,用于自我理解的目的。其中用到了对象池和...
  • QiaoranC
  • QiaoranC
  • 2017年08月01日 16:16
  • 355

unity3d,制作自己的第一个射击游戏demo,实现镜头跟随和键盘控制移动

1.镜头自动跟随 2.wasd移动 3.人物随着鼠标的朝向 4.子弹的发出,主要是方向问题 5.子弹发出时的火花 6.子弹与目标体的碰撞和消除...
  • qq_34550847
  • qq_34550847
  • 2017年01月18日 10:43
  • 1151

Cocos2d-x3.0游戏实例《别救我》目录导航(共10篇,已完结)

这个5.1假期还真不错,有个小惊喜,那就是,我某个游戏今天的下载量爆表了,突破历史最高点~! 于是,我决定写一个新的游戏实例教程,以示庆祝~   啊才怪啊~!这教程5.1之前就在写了,我还因此暂停了差...
  • musicvs
  • musicvs
  • 2014年05月03日 17:40
  • 12363

java swing游戏源码-宇宙战争游戏,Java飞船射击游戏

原文:java swing游戏源码-宇宙战争游戏,Java飞船射击游戏 源代码下载地址:http://www.zuidaima.com/share/1880717151603712.htm ...
  • yaerfeng
  • yaerfeng
  • 2016年12月07日 09:48
  • 1184

html5写的射击小游戏

通过设置小球的水平速度和竖直速度,让小球射击右侧在墙上的小球,当两个小球碰撞时,墙上的小球会有新的位置。游戏同时可以记录打中的球的个数。 以下是代码: var cwidth=600//画...
  • supersnow0622
  • supersnow0622
  • 2013年02月01日 15:22
  • 2266

Unity3D教学 开发简单版第一人称射击游戏 可以多人联机(附源码)

这一篇文章主要是和大家分享如何制作一个属于自己的“第一人称射击游戏”,而且是要可以多人联机的。这个游戏属于比简单的,大神可以直接无视,如果有做错的地方请大家多多指点,我也是刚学如何做游戏。代码是用C#...
  • sumkee911
  • sumkee911
  • 2017年02月07日 12:29
  • 13069

【Unity3D】游戏常用点整理-飞机射击类游戏

1)飞机控制 在有限的范围内上下左右移动 public class Boundary { public float xMin = -6.5f; public float xMax =...
  • TW_345
  • TW_345
  • 2015年08月05日 17:50
  • 1633
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:cocos2d-x游戏实例(19)-纵版射击游戏(6)
举报原因:
原因补充:

(最多只允许输入30个字)