开始
今天,我们来用C3来做个小动画,(为啥用c3?因为不用怎么学啊)为啥想到做个小动画呢,因为失业在家闲的呗,所以 想到了和广大的**网友一起来玩。大爷一起来玩嘛,反正是个在线的应用,召唤你个链接Construct 3 点你。
真的开始了
首先新建个项目
起个低调的名字,其他,反正也不懂就都默认吧 进去之后长这 diao样 哇!一大堆的按钮,一大堆的选项。你以为我会给你介绍吗?偏不直接就开始了,惊不惊喜
来来来,随便找块地,双击,duang的一下出现一个框,你说神不神奇
找到Sprite新建一个精灵对象,取个好听的名字
然后 插入(嗯 插入 power),接着,你会发现你变了,不,你的鼠标变了,变成十字了,接下来懂了吧,问你插哪儿呢。大老爷们的,随便插吧。
又是duang的一下,又出来一个框
顺势就画了一个圆,贼正,有没有(按住shift可以画正圆的小技巧大家都知道吧)接下来,就是关键的操作了
球出来了,开不开心,点击标签栏上的小三角还可以预览一下,是不是更开心了把球拖动到虚线框外面,这样我们就看不见它了,为啥要让它看不见,因为我们要动态的创建它,一个球有什么意思,男人起码有两个球。
接下来,我们还需要4面墙
墙还用画吗,直接填充不就行了,反正创建之后可以随便改大小,我真是一个天才 这才一堵墙啊,其他3堵怎么办,又得从头开始吗?小傻瓜,程序员最重要的本领,当然是CV大法好呀(选中之后直接CV,也可以按住CTRL拖动) 真是完美的布局(垂直的墙,请使用旋转)让我添加最后一个精灵,一条线
完美,接下来让我们给所有的精灵添加不同的行为
随便选中一堵墙
墙嘛,当然就是个固体嘛,添加完事依样画葫芦,我们给球添加Bullet属性(让子弹飞),线添加Pin属性
每当我们添加新的行为后,精灵就会多一些属性让我们编辑。
选中球,把Bounce off solids这个勾勾上,这样我们的球撞到墙这种有solid属性的东西后就会反弹,把球放在可视区域内,预览一下,是不是已经有点意思了
又来一步关键动作,在你的右边栏里,找到你的球,把它添加到一个family里(听说family功能收费,不过注册一下可以试用,别告诉我到现在你都没注册)
差不多了,到正戏了
接下来我们开始写事件了,好high哟,感觉人生已经到达了高潮
来切换到事件表
我们先添加一个全局变量,管理我们待会要创建的球的数量
随便找个地方右击
非常完美
好我们开始写bug,不,写事件吧,双击...duang
System -> Next
On start of layout -> Next
完成一半了,前面部分是约束条件,后面的是具体的行为,还是挺语义化的嘛 点击旁边的“Add action”或者选中某条件下使用快捷键a,添加一条行为
还是和上面一样选择 System->Create Object
出现下面的框
都很简单对吧,创建一个对象,我要20个球,Layer决定放在那一层(现在就一层,就是0),X和Y决定位置,ViewportWidth和ViewportHeight方法获得某个Layer的可是范围的宽和高
名字起得太长,要敲好多呀,容我改个名字 运行一下看看,才一个球啊。所以,我们得再加个条件,循环20次选中我们的条件,右击Add anothor condition或者按c键
System->Repeat 填入我们的变量MAX_NUM
瞅一瞅,数一数二亖六七八,没毛病20个球
现在我们已经有20个球了 就是单调了点,他们只会从左边撞到右边,再回来(像不像你平常的工作),所以我来加点料
添加action,选择你的球(particle -> Set angle)填上random(360)
再来一次,particle ->Set speed
random(100,200)
有点样子了,现在我们让所有距离小于40的两小球之间连上线
添加一条新的事件点击 Add event System -> For Each ->particle
现在我们给这个条件加子事件,为啥要加子事件,因为每次遍历我们要干两件事,给所有相距小于40的两小球连条线,利用线的Pin属性固定线的左端随着其中一个小球的移动而移动,并记录匹配到的小球b的ID和线的id给小球a(知道为啥用family了吧,就为了可以区分出小球a和小球b)
particle -> Set value -> matchingUID
particleFamilies.UID
System -> Create object
particle -> Set value -> lineUID
line.UID
line -> Pin to object -> particle
line -> Set width
distance(particle.X,particle.Y,particleFamilies.X,particleFamilies.Y)
(distance方法可以计算俩个点之间的距离)
line -> Set angle toward position
particleFamilies.X particleFamilies.Y
为了记录这两个值,我们需要给小球增加实例变量
选中小球
增加两个数字类型的变量 matchingUID,lineUID
另一件事就是,把连接俩个小球的线的尺寸动态的设置成两个球之间的距离,并旋转其角度;当两球的距离超过150时,销毁线(或者添加Fade行为增加一点动画效果)注意!!!
添加子事件时请选中整个条件框,不然你的右击菜单中不会有子事件(或者使用快捷键s)
System -> Pick by comparison
哈哈哈 这就差不多了,贴张整体图跑路
最后 贴上工程文件
链接: pan.baidu.com/s/1xeo81oWE…
提取码: yp84