嗨!大家好,我是小蚂蚁。
在游戏的世界中存在着两种位置,一种叫做绝对位置,一种叫做相对位置。在不同的游戏开发工具中这两种位置分别有着不同的别名,绝对位置有时也叫世界位置,或者 world position,而相对位置也叫本地位置(局部位置),或者 local position。
理解这两种位置的不同对于游戏开发者来讲是很重要的,尤其是在处理与位置相关的问题时。
今天,我们就以一个示例来彻底的理解这两种位置的区别。
如图,是小游戏制作工具中的场景编辑区,在场景编辑区的两侧包含标尺,从标尺可以看出游戏屏幕的中点就是整个游戏世界坐标系的起点(不同的游戏开发工具起点可能不同,例如 CocosCreator 中的起点就是游戏屏幕的左下角)。通常我们所说的一个物体的位置,都是指的物体在游戏世界坐标系中的位置。例如当前的红色的小球的位置坐标为 (100, 100),指的就是红色小球在世界坐标系中位置。
接下来,我们做个小实验,下方有两个小方块,一个蓝色一个绿色的,我们会将蓝色的方块位置设置在红球的绝对位置,然后将绿色的方块的位置设置在红球的相对位置。看一下结果会怎么样。
蓝色方块的积木。
红色方块的积木。
运行一下看看结果。
蓝色方块和绿色方块都被设置到了相同的位置上,可见,此时不论是我们设置绝对位置还是相对位置,结果都一样。
接下来我们做一些调整。
如图,我又增加添加了一个绿色的小球,并且将这两个小球打包到了一个容器中。
修改一下蓝色和绿色方块的积木,这一次分别将它们设置到绿色的小球的绝对位置和相对位置上。
蓝色方块积木。
绿色方块积木。
再次运行一下看看结果。
这下出问题了,蓝色的方块(设置为小球的绝对位置)正确的设置在了小球的位置,但是绿色的方块(设置为小球的相对位置)却没有被设置到小球的位置。
这是为什么呢?为什么在第一个例子中,我们设置的绝对位置和相对位置都相同,但是在第二个例子中这两个位置却发生了差异呢?
这是因为在第二个例子中我们将球放进了容器中,这导致了计算相对位置的坐标系发生了了变化。
如图,绿球的相对位置变为了以容器中心为原点的坐标系中的位置。
其实可以这样理解,绝对位置就是物体在世界坐标系中的位置,而相对位置就是物体在本地坐标系中的位置。世界坐标系在游戏世界中是恒定不变的,但是本地坐标系是可能随时变化的。
所以第二个例子中的绿色的方块之所以位置会出现在那里,是因为我们将绿色方块在世界坐标中的位置设置成了绿球在本地坐标中的位置。
对于游戏开发新手来讲很容易搞混这两种位置的区别,因为当只有一个物体时,这个物体的相对位置和绝对位置是一样的,所以这两种位置经常会被混用,也不会出现问题。但是当需要处理容器中的物体位置时,就要格外注意区分这两者的区别了。一旦用错,游戏中的物体位置就会出现问题。
我是会做游戏也会教你做游戏的小蚂蚁,想学习游戏开发的话,关注我的公众号就对啦!
没有系统性的学习课程和路线?自己学习没氛围学不下去?遇到问题无人帮助即时解答?缺少经验不知该如何前行?......欢迎加入小蚂蚁的游戏开发年度课程,不只是一门课,而是围绕着学习游戏开发有关的一整套服务。帮助你用一年的时间学会做游戏,做出自己的游戏,让游戏为你带来睡后收入。欢迎来跟很多同学一起学习做游戏,一起探索游戏的更多可能。【点击这里】可了解课程服务详情,【点击这里】可了解小蚂蚁能为你提供的其它课程和服务。
学员在学会做游戏之后,如果想要继续学习推广运营,我也准备了特殊的优惠,可以半价加入【小游戏推广践行群】,继续学习,打造自己的系统全面的游戏商业能力。
这里是我制作的部分小游戏《经典消除游戏大全》《彩虹星球大冒险》《经典俄罗斯方块》《疯狂泡泡龙》大家可自行点击搜索体验。
长按识别关注
交个朋友!