1

我正在使用 Unity 3D 制作一个简单的 2d 横向滚动游戏。当我说 2d 时,我的意思是它会出现 2d,所有背景资源都是 2d,但主角是 3d。我想要的是不平整的地板表面。只有出现在背景上的东西才会有真正的地板,所以从技术上讲,我想假装地板碰撞。

我研究了iTween,这看起来可以做我想做的事。我的想法是使用 iTween 创建一条与背景地板相匹配的线条。然后我会将主要字符 x 位置与行 x 位置匹配,然后在此时获取行 y 位置以设置字符 y 位置。

我唯一的问题是我似乎无法获得直线的坐标。iTween 中有一个名为 PointOnPath() 的方法,但为了获得坐标,我需要知道我的角色在直线上的距离是多少百分比。这是我不知道的,因为我的角色实际上并没有遵循这条线。

如果有人对我如何实现这一点有任何想法,无论是否使用 iTween,将不胜感激。

提前致谢,

约翰

4

1 回答 1

0

你可以使用 Unity3D 的碰撞。BoxCollider可用于模拟平坦的地面,也可能通过将不同大小的 BoxCollider 放在一起来模拟您所描述的不平坦地面。

如果您想模拟弯曲的碰撞表面,请考虑使用MeshCollider并导入一个基本 3D 网格(来自 Blender、3DSMax、Maya 等),该网格具有适合您关卡形状的低多边形数。

演示这一点的一个非常快速的方法是拖动几个 Cube(GameObject->Create Other->Cube),选择它,然后在 MeshFilter 和 MeshRenderer 上右键单击->Remove Component,留下 BoxCollider,您可以可以移动/旋转/缩放。

我可以很容易地预见到这个导致的唯一问题是有台阶/楼梯或小的高度差异。Unity 的示例角色通过将玩家的碰撞作为胶囊形状来处理此问题,当胶囊在特定高度撞击楼梯的大小时,它会将胶囊向上推。替代方法可以是在代码中修复楼梯碰撞处理,或者在台阶之间的间隙中添加一个倾斜/倾斜的碰撞器。

于 2012-08-07T06:01:32.030 回答