想在Unity 3D中使用iTween进行二维楼层碰撞

时间:2012-08-06 12:29:50

标签: c# collision-detection unity3d

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

我已查看iTween ,看起来它可以做我想要的。我的想法是使用iTween创建一个与背景上的地板相匹配的线。然后我将主要字符x位置与x行位置匹配,然后在此处获得y位置以设置字符y位置。

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

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

提前致谢,

约翰

1 个答案:

答案 0 :(得分:0)

你可以使用Unity3D的碰撞。 BoxColliders 可用于模拟平坦的地面以及可能通过将不同尺寸的BoxColliders彼此相邻放置而描述的不平坦地板表面。

如果您想模拟弯曲的碰撞曲面,请考虑使用 MeshCollider 并使用低多边形导入基本3D网格(来自Blender,3DSMax,Maya等)适合您级别形状的计数。

一个非常快速的方法来展示这个是拖动几个Cubes(GameObject-> Create Other-> Cube),选择它,然后右键单击>删除MeshFilter和MeshRenderer上的Component,让你离开使用BoxCollider,您可以移动/旋转/缩放。

我唯一能够预见到这个问题的唯一问题是步数/楼梯或小高度差异。 Unity的示例角色通过将玩家的碰撞视为胶囊形状来处理此问题,当胶囊达到某个高度的楼梯大小时,该胶囊将胶囊向上推。替代方案可以是在代码中修复楼梯碰撞处理,或者在步骤之间的间隙处添加倾斜/倾斜的对撞机。