多语言展示
当前在线:1125今日阅读:2今日分享:38

怎么让unity3d中的物体垂直于地面、平行于地面

在unity3d中希望角色一直垂直于地面进行移动,在斜坡也可以斜着运动,底面与地形平行,我们可以通过射线的方式获得地面当前的法向,然后把物体的方向设置与法向对应,这样就可以让物体永远垂直于地面了。
工具/原料

unity3d 5.3工具。

方法/步骤
1

在地形斜坡的位置创建一个Cube立方体。

2

给Cube添加Rigidbody刚体组件。

3

选择Terrain地形,设置里面的Layer为Terrain。

4

接着我们给Cube添加一个Vertical_ter脚本。

5

在脚本中的update方法中创建第三变量hit,Rmask获得地形mask,Point _dir射线方向为物体down方向。

6

然后判断当射线hit到底面,获得这个点的法向hit.normal,接着可以计算出垂直于地面后的状态NextRot,最后通过MovRotation进行旋转。RaycastHit hit; int Rmask = LayerMask.GetMask ('Terrain'); Vector3 Point_dir = transform.TransformDirection(Vector3.down);if (Physics.Raycast(transform.position, Point_dir, out hit, 50.0f,Rmask)) { Quaternion NextRot=Quaternion.LookRotation(Vector3.Cross(hit.normal,Vector3.Cross(transform.forward,hit.normal)),hit.normal);GetComponent().MoveRotation(Quaternion.Lerp(transform.rotation,NextRot,0.1f)); }

7

现在我运行场景,发现立方体会垂直与斜坡了,底面与地面平行了。

推荐信息