2013-12-13 18 views
3

我正在尝试在Unity中创建2D平台游戏。我在Photoshop中创建了一个角色,并将他导入Unity。我在他下面画了一个长方形的地板。然后,我尝试按照本视频中的说明应用角色物理和控制器:http://www.youtube.com/watch?v=d3HEFiDFApI。 (我用的两种脚本可以在视频的描述中找到,但我敢肯定,他们很好,因为他们工作的优良的家伙做教程)。我的球员在地面下跌

然后我创建了一个名为新层“碰撞”,我将其应用到场地并在PlayerPhysics菜单中进行选择。但是,当我玩这个场景的时候,我的角色恰好落在了地板上。

玩家控制的工作 - 我可以左,右移动在空中 - 它只是似乎是物理学。当我切换物理脚本时,我的玩家会掉到矩形的底部,而不是落在顶部,它会部分遮住,但他可以前后移动。不确定是什么问题;如果有人能帮助我,我将不胜感激。

这里是DL链接到我的故障项目,如果有人想看看是:http://www.filedropper.com/unityproject

+0

您可能希望将文件上传到文件共享网站以外的其他地方。尝试兆或D​​ropbox –

回答

4

看你的项目,问题就在这里:

您已为您的播放器设置了一个比例。您的PlayerPhysics(其中is based off of Sebastien Lagué's tutorials)没有考虑到这一点。

您的碰撞检测依赖于一组你计算光线投射如下:

float dir = Mathf.Sign(deltaY); 
float x = (p.x + c.x - s.x/2) + s.x/2 * i; // Left, centre and then rightmost point of collider 
float y = p.y + c.y + s.y/2 * dir; // Bottom of collider 

ray = new Ray(new Vector2(x, y), new Vector2(0,dir)); 

这里的问题是s这是由

s = collider.size; 

定义你不过要记住,对撞机的尺寸值不受比例尺的影响。你将不得不为此明确调整。鉴于你在这种情况下,规模为0.3统一的因素,你可以不喜欢

s = collider.size * transform.localScale.x; 

但是,当然,你将不得不如果你有不同的轴不同的缩放因子进行调整。这种调整应该排列好射线。

也许你没有注意到,但在编辑器中查看光线被游戏玩的时候绘制。所以你实际上可以看到发生了什么问题的视觉指示。进行上面所述的更改,并且应该排列好。

+0

这似乎工作,谢谢! – user2962388