Gamemaker快速教程

248 Views

注意gamemaker中坐标和角度计算的y变量是相反的!!

 

这个教程就当作一个总结吧,以后除了小的项目和需要快速开发的小工具等就不用gamamker了,准备全线转移到godot引擎。

Gamemaker的基本机制

gamemaker的三大要素物体object,事件event和步step,是gm世界中最重要的概念。

object物体

object有点像面向对象中的类,它定义了一个物体在游戏中在各种情况下做出的行为,与之对应的另一个概念是实例instance(即面向对象中的对象)。

如果你不了解面向对象,这没关系,让我们举一个简单的例子:

object好比是一个蓝图,是抽象的,而instance则是完全依照object这个蓝图制作出来的实体。

比如我们制作一个叫做大嘴猴的object,并定义它能吃能拉会爬树。但注意这个object本身并不能这样做,只有用它生产出来的instance实例大嘴猴才可以。并且生产出来的实例行为完全一样。

我们就用这些instance完成游戏中的大部分行为。

 

shi

 

 

///关于object参数的更新时机

物体的参数更新当然不是实时的,因为每一个step都有很多事件,create,step,end等等,物体的属性比如速度等等是在一轮结束后才进行更新,在需要检测物体碰撞的时候要尤其注意这个问题。

 

事件

draw:绘制通常只能在draw事件内执行,但也可在step event内绘制在其他surface上后,再将surface在drawevent中进行转绘

推荐的视频教程

Shaun Spalding on YouTube

HTML学习入门指南

112 Views

列举了一些初遇HTML最常遇到的问题

啥是html?

html是一种描述网页的超文本标记语言(注意它不是编程语言),你平时浏览的网页就是用它书写的。

用什么工具来写网页呢

最简单的记事本到notepad++,不过在这里推荐使用sublime text进行编辑,功能强大又不很消耗性能,如果你善于学习新东西则推荐使用Atom。

到哪里学习html语言

W3school的教程,简洁明了,很适合于入门

Sublime Text 3入门

插件:为了更好更方便地使用sublime,你需要先装些插件

安装插件的方法


01为sublime text安装Package Control组件

  1. 按Ctrl+~调出sublime text的console
  2. 粘贴以下代码到底部命令行并回车: import urllib2,os;pf='Package Control.sublime-package';ipp=sublime.installedpackagespath();os.makedirs(ipp) if not os.path.exists(ipp) else None;open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read())
  3. 重启Sublime Text
  4. 在Perferences->package settings中看到package control,则表示安装成功

02使用Package Control安装Emmet插件

  1. 按Ctrl+Shift+P命令板
  2. 输入install然后选择install Package,然后输入emmet找到 Emmet Css Snippets,点击就可以自动完成安装

查看源文章


这里推荐一些其他插件,安装方法同。

实时预览:LiveReload, Emmet LiveStyle(都需要在chrome浏览器上安装相同配套插件)

简易本地预览:markdown 教程

动画12原则

,
185 Views

原视频:

1.Squash and Stretch 压扁与拉长

绘制时将高速运动的物体拉长或是将碰撞的物体压扁使得它们看起来更真实,注意保持体积的原则

2.Anticipation 预备动作

活动通常不是突然发生的。预备动作可以帮助观众为下一个动作做好准备,由于有一定的准备阶段并且通常都是慢速的,这可以强调将要发生动作的主体和它们的趋势并引导观众视线。如果动作突然开始,观众很可能因没看清而错过一些东西。这个技巧同样可以用来对观众玩一个小把戏–将他们的视线引到一处并在另一处制造惊喜。

多重准备动作—有些准备动作可能分为几个阶段–比如棒球手抛出一个棒球是由很多前奏动作的。

3.Staging 演出

演出是对一个想法的完全且准确的表达。作为动画师你肯定想完全控制观众往哪里看,基本上就是“看这,看这,然后看这”。所有的元素协同工作来控制观众视线的移动。所以在一个动作结束后在开始另一段动作,如果动作同时发生观众根本不知道往哪里看。镜头的远近也很重要。远景通常表现一些大的动作,近景则适合表现表情。另外时刻保持主要动作在画面中心附近或是1/3处,如果角色脸朝向一边,那么要给他面向的方向更多空间。保持画面的简洁性,不必要的东西会分散观众的注意力。在需要时间观看的地方要有一定的停顿,比如需要阅读的字—你需要停顿大声朗读三遍的时间。

演出也是想法的表达。如果表现一个人非常非常贫穷,那他应该家徒四壁,而不要添加不需要的东西。总之让它们看起来更加真实和有情感。

4.Straight-Ahead and Pose-to-Pose 连续绘制和关键帧绘制

Straight ahead的好处是过程很流畅,但最明显的问题是人物大小和运动路径很难控制,可能第一帧人物很大,而最后一帧就变成蚂蚁那么小了。这很适合那些非常难以预料而又连续运行的动画,比如火焰飞溅爆炸等等效果。

Pose to pose是先绘制好keyframe,先画好头尾,然后在中间插入一帧,以此类推直到动画变得流畅。

Pose to pose有几个名词–最重要的动作叫做keys(这通常是头尾和中间表达最重要的帧),然后是extremes,最后是breakdowns。在下一步绘制前应该先把最重要的key表现好。

另一种技巧是overlapping。比如绘制一只米老鼠,通常先只绘制身体,而尾巴可以在最后的时候补上。这样你在绘制身体的时候变得简单,并且画尾巴的时候只需要注意身体的运动方向就可以了。这适用于各种附属物-头发,长耳朵,帽子斗篷等等。

5.Follow Through and Overlapping Action 惯性移动和滞后

follow through是指主运动停止后由于惯性继续运动的轨迹,而overlapping是指与主运动有一定的相位差。Drag是指和运动的滞后。但这三者只是同一个现象的不同说法而已。

具体说就是副运动滞后于主运动,主运动停止后副运动继续由于惯性向前,最后回到原始位置的过程。滞后可以帮助我们将动画分成几个部分并看起来更为有趣和真实。

6.Slow In and Slow Out 缓入缓出

缓入缓出可以让物体看起来更加自然,而大多数机械的东西以固定的速度运动。

7.Arcs弧线运动

大多数物体运动轨迹都是弧形的,这不仅使其看起来更加自然,也更加美。

8.Secondary Action 次要动作

次要动作为主要动作服务并增强它们的表现力。比如一个角色在敲门–如果另一只手握紧拳头,那他可能很生气,如果敲门前东张西望,那他可能不想被人发现。主要动作前的准备动作也算作这种。又如我们绘制一个角色在吃东西–主要动作是咬,你可以添加诸如观察食物,闭眼拒绝和摇头来表现出角色非常享受的状态。

9. Timing 节奏

各主要动作间的中间帧数很大程度上影响了一段动画的特性。更多的帧数意味着更慢,而少的帧数则很快。通常标准动画是24帧每秒,这叫做1拍1,而12帧每秒也就是24的1/2则称作一拍二。动画最低是一拍三。一拍一在迪士尼动画中很常见,但这对绘画技巧要求很高,否则画面就会出现抖动,尤其是慢速的动作。而一拍二一般认为是比较合适的,它表现快的动作更加有张力。

10.Exaggeration 夸张

夸张可以使动画更加真实和有吸引力,但注意夸张并不等于形态的扭曲,而是更加有力的表现。注意快的动作要用更大强度的夸张,因为夸张的动作出现的时间比较短,这会减弱它的强度。或者使用小一点的但时间更长的夸张也可以。由于很难界定该使用多大程度的夸张,一个通常的做法是提高夸张程度直至真的感觉到太过了,然后再想下调整到满意位置。

11.Solid Drawing 真实描绘

绘制出来的东西要有立体感,而不是看起来平平的。这需要利用透视的知识。另一个例子是在地面上画上透视线,这样你就知道角色站在某个地方的大小了。在角色姿势上要尽量避免使用twinning对称的姿势,这看起来会很死板。取而代之是使用不同的而平衡的姿势。

12.Appeal 吸引力

设计的人物要有相应的特色和魅力,不仅是对于主角,也包括所有其他一切出现的东西。Appeals不一定是好看的,也可以是有趣的。

使角色生动有几个技巧

1.Variety of Shapes多样的形状

不同的人物有着不同的比例形状和大小,这样他们区分度更高,更有个性。每个好的角色设计都应该从一个干净的形状入手。

2.Proportions比例

夸张的比例可以加强人物的个性。

3.Keep it Simple 保持简洁

动画和插画不一样,你需要保持简洁,你可以简化装饰并夸大它们达到效果。

 

Arduino中断

72 Views

大家都知道,arduino运行时是先执行完setup{},然后不间断循环执行loop{}内的代码。所以如果想要制作一个按键流水灯就要这样做

void loop()

{

buttonState = digitalRead(buttonPin)

if(buttonState == HIGH){

…..

}

 

命名那点事儿

87 Views

经常碰到懒于命名的同学,文件经常起像123abc,qwer123这样的名字

第一位为描述变量的所属分类,比如精灵图片可以这样命名:

spr_goldenGreenHat

这样做的好处是第一眼就知道这是什么,并且可以将同类的变量自动排在一起

变量前加类别前缀

举例表示某对象的精灵:spr_goldenGreenHat。这样表示的有点是当一个对象有多个子属性或是子对象时很容易区分。在gamemaker中每个object都有多个资源如精灵,路径,音频等,更为容易分辨且代码更为清晰。