Cocos2dx,Windows
学习 Cocos2dx 的笔记

cocos2dx 精灵自动下落

在很多点击类游戏中,有很多场景用到了自动下落。例如:钢琴块



要实现自动下落功能,需要知道几个函数:scheduleUpdateschedule、scheduleOnce。这几个函数都是定时器函数。什么是定时器?实际可以简单的理解为经过多长时间去执行某一个动作。比如经过3秒执行一次加法运算。注意这个字的含义,它代表的是循环。还有这样的定时器,只执行一次,但是是经过3秒钟才执行这一次动作,然后在下个3秒就不在执行了。这种定时器是一次性的定时器,不是上面的循环计时器。所以定时器大致分为2种:1、循环定时器(每经过一段时间进行一次动作执行)2、一次性定时器(经过一段时间后执行一个动作,然后就不在执行,即使又经过了一段时间也不在执行。)


理解了定时器,还要理解一个概念:位置移动。实际精灵在屏幕上显示的位置是以屏幕坐标来定位的。这个坐标分很多种例如:世界坐标,UI坐标,这里不在表述。只知道它是个坐标就好了。一个720x1080的屏幕。宽:720像素,高:1080像素。举个例子:有一个精灵她的坐标是100x100。X轴坐标是100,Y轴是100。在给他一个坐标100,50。在坐标系中去画出来她。


无标题.png


方块2的位置相对于方块1的位置,在手机上显示是不是就感觉下降了。实际这就是下落的原理:改变精灵坐标。结合定时器,让坐标每经过一段时间就更改一下Y轴坐标。就可以实现了。代码如下:



schedule(schedule_selector(Can::update),interval);


setPosition( getPosition() + ccp(0,Can_down) );


visual basic 直线和圆的位置关系

Private Sub Command1_Click()
    Dim radii As Double
    radii = 10
    Circle (70, 70), 10, vbRed
    Line (100, 100)-(190, 90)
    Dim lineDis As Double, lineA As Double, lineB As Double
    lineDis = wss(100, 100, 190, 90)
    lineA = wss(100, 100, 70, 70)
    lineB = wss(190, 90, 70, 70)
    Dim p As Double, lineCen As Double
    p = (lineA + lineB + lineDis) / 2
    lineCen = Sqr(p * (p - lineA) * (p - lineB) * (p - lineDis)) * 2 / lineDis
    If lineCen >= radii Then
        Label1.Caption = "计算结果:相离"
    Else
        Label1.Caption = "计算结果:相交、相切"
    End If
End Sub
Function wss(ox As Double, oy As Double, tx As Double, ty As Double) As Double '求平面空间直线长度
    wss = Sqr(Abs((ox - tx) * (ox - tx) + (oy - ty) * (oy - ty)))
End Function



360截图16280722335450.png

MemoryLine 随机地图算法

随机地图的理解

Cocos2dx引擎写游戏的话,多数情况下是在类似画布的场景中去添加精灵。MemoryLine游戏定位的时候是一款类似一笔画的游戏,然而我想让游戏无穷话,所以就不能按照一笔画那种地图模式,而是不断的根据关卡数形成新的地图。这涉及到了随机。

我的随机

一开始没有理解怎么在一张空白的画布上面随机的布置点位,让点不重叠,互相有一定间隔。如果按照普通的随机,那么随着关卡数的增加,随着点数的增加,重叠的几率也会相应的增加。所以我想了下面这个方式来解决随机带来的一些问题。


如何看待地图

对于MemoryLine的游戏地图,我认为它是一张白色的画布。


1.png


这张白色的画布是由无数个点组成的。因为图像就是由一个个像素点组成的,只不过密集程度不一样。所以这里我把这个密集程度放大了一定倍率。变成了下面的图。


2.PNG


方格化了这张图。那么我在定位上平面坐标。就可以比较准确的定位每个方格的位置。随机的时候就可以根据方格来随机,于是就可以进行不重复且有一定间隔的填充。


4.png

梦幻西游手游双平台进不去

Screenshot_2017-07-05-12-18-45.png

梦幻西游手游双平台进不去怎么办

1、网络问题:由于梦幻西游手游需要连接网络进行游戏,所以在用数据流量连接的时候很容易闪退。往往提示读取网络数据后,就无情闪退。

解决方案:建议在玩家在WIFI环境下开始游戏,或者是3G/4G等网络环境较好的地方开始游戏哦。

2、内存不够:有部分小伙伴手机的内存不够了,就会出现卡顿、闪退的情况。

解决方案:注意,这类的玩家是最多的,因为手机内存不够,玩家把手机里面的一些不要的内容进行删除,在用软件清理下垃圾,在进入游戏即可。

3、服务器问题:人数太多,情况导致服务器亚历山大。出现老是掉线、闪退的情况。

解决方案:因为是最近比较火爆的手机游戏,所以会出现人比较多的情况,建议玩家换人少的服务器,重启游戏,在每一次玩之前重启一下,就可以避免闪退。


解决办法

网易高估了自己的服务器,低估了玩家的踊跃程度。于是造成了现在进不去游戏的尴尬局面。不过好的是,也有可能网易反省了一下,于是紧急开了一个新区。在2017年7月6号12:00。另一个双平台区就会启动。实际这也是饮露止渴。


QQ截图20170705174340.png