如上图,
Unity
在制作
2D
游戏
有时可能会有需要考虑
角色
交互重叠的情况,而不同Gameobject的order in layer我们一般是在inspector里给定的。所以为了处理这种情况,我们可以通过代码实现方法并在update里实现:
protected void LinkYwithOrderinlayer()
//chartransform为
角色
的transform组件
float yPos = chartransform.position.y;
经历了之前这么多波折,3d模型和动画还是没法儿用,这时我们开始寻找其他的
解决
办法。
我们当时想做的是一个俯视角
45
度
的2.5D
游戏
,为什么是2.5D
游戏
?因为这种
游戏
由于视角是固定的,所以没有必要全部素材都用3D素材,常常是
2D
与3D的混合。
这种类型的
游戏
虽然没有横板
游戏
那么好制作,但是在难
度
上要低于3D
游戏
,对于美术素材也可以用比较便宜、制作周期短的
2D
素材。
比如说去年很火的《哈迪斯》就是2.5D
游戏
,他的人物以及大部分的
场景
都是3D模型。但是也有小部分
场景
素材用的是
2D
素材。
再古早一点的这
主要是各个
物体
的
遮挡
关系
。
如果按照使用Layer和Layer Sort的话两个精灵的
遮挡
关系
便已经确认,不管在前在后。
所以外面把所有精灵放在同一层,优先级也相同。
那么怎么确定
遮挡
关系
呢?
我们知道,摄像机从z小的地方往z大的地方看。所以,z值越小的
物体
越靠前。
结合尝试,想到了一个调整方法:y越大的越后面,所以我们让z与y保持正比
关系
即可。
首先是我们的对象设置情况:
Player是一个质点,带有Rigidbody
2D
和Collider
2D
质点位置:
ZPosi