我正在尝试在Unity中创建2D平台游戏.我已经在Photoshop中制作了角色,并将其导入Unity.我在他下面画了一个矩形作为地板.然后,我尝试按照视频中的说明应用角色物理和控制器:http://www.youtube.com/watch?v=d3HEFiDFApI.(我使用的两个脚本可以在视频说明中找到,尽管我很确定它们很好,因为它们可以正常工作给做本教程的人.)
然后,我创建了一个名为“碰撞”的新层,将其应用于地板并在PlayerPhysics菜单中进行选择.但是,当我播放场景时,我的角色正好跌落在地板上.
播放器控制工作-我可以在空中左右移动-似乎只是物理学.当我关闭物理脚本时,我的播放器掉到矩形的底部而不是降落在顶部,并且部分遮盖了,但他可以来回移动.不确定是什么问题;如果有人可以帮助我,我将不胜感激.
如果有人想看一下,这是我发生故障的项目的DL链接:http://www.filedropper.com/unityproject
解决方法:
查看您的项目,问题出在这里:
您已经为播放器设置了比例.您的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 = collider.size;
但是,您必须记住,对撞机的大小值不受缩放比例的影响.您将必须对此进行显式调整.假设您的标尺在这种情况下的统一系数为0.3,则可以执行以下操作
s = collider.size * transform.localScale.x;
但是,当然,如果不同轴的缩放比例不同,则必须进行调整.该调整应使光线对齐.
也许您没有注意到,但是在编辑器视图中,游戏进行时绘制了光线.因此,您实际上可以直观地看到问题所在.进行上述更改,所有内容都应对齐.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。