在制作2D平台游戏的基础教程中,我得到了一些代码:
if (Physics2D.Raycast(ray, out hit, Mathf.Infinity, collisionMask))
但是Unity说你需要Vector2
而不是Ray
和out hit
。有没有办法可以用Vector代替相同的值并产生相同的效果?
如果您需要,请点击ray
代码:
ray = new Ray2D(new Vector2(x,y), new Vector2(x,dir));
代码现在正在编译,但它实际上没有工作(它应该模拟重力,所以角色会一直掉到地面上)但它只是落地了。
PlayerPhysics.cs
PlayerController.cs
在Unity中,角色有一个Box Collider 2D,它正确设置并且脚本都已连接,并且平台正确设置了Box Collider 2D。
答案 0 :(得分:1)
您的ray
有来源和方向组件(两者都是向量),请尝试以下操作:
var hit = Physics2D.Raycast(ray.origin, ray.direction, Mathf.Infinity, collisionMask));