Unity+MRTK实现物体旋转(正向和反向)

正向旋转

1.目标物体挂载NearInteractionGrabbable脚本、BoundsControl脚本、BoxCollider组件、RigidBody组件、ObjectManipulator脚本、ConstraintManager脚本、MinMaxScaleConstraint脚本、MoveAxisConstraint脚本(后两个需要在ConstaintManager点击Add New Constraint)
2.MinMaxScaleConstaint脚本中Scale Minimun和Scale Maximum设为1,防止操作中把物体放大了
3.BoxCollider合理编辑碰撞器的外形符合物体
4.MoveAxisConstaint把Constraint On Movement改为everything
5.RigidBody里的Gravity根据实际情况判断是否禁用
6.BoundsControl->Visual->Scale Handles Configuration->Show Scale Handles可以点击关掉,防止误触改变物体大小
7.BoundsControl->Visual->Rotation Handles Configuration->Show Handler for X/Y/Z,可以控制可旋转的方向,比如我关掉了XZ,那现在这个东西只能沿着Y轴旋转。Rotation Handles Configuration和Proximity Configuration里面的一些功能能调整Handle的效果,不再赘述(其实是因为没怎么弄过hhh)
在这里插入图片描述
在这里插入图片描述

8.Object Manipulator->One/Two Handed Manipulation->One/Two Hand Rotation Mode Near/Far,可以调整旋转方式——围绕抓取点旋转(Rotate About Grab Point)或者围绕物体中心旋转(Rotate About Object Center),视情况而定,友情提示可能没有想象中那么理想,不会真的完全围绕抓取点或者完全围绕物体中心旋转。

最终实现效果

在模拟器中运行时,物体可以随着Pointer运动的方向而正向旋转

Tips:Rigidbody->Constraints->Freeze Position/Rotation似乎是会失效的,优先级没有MRTK的这两个Component高,测试的时候发现即使Freeze Position和Rotation,依然可以通过手势旋转、移动物体。

反向旋转

原理:采用RigidBody组件,并在三个方向上都Freeze Position,然后根据情况Freeze Rotation某些方向,实际效果根据个人需要调整。比如我要它在Y方向上反向旋转,只需要Freeze Position X/Y/Z,然后Freeze Rotation X/Z,最后就可以看到物体随着模拟手牵拉的方向而反向旋转。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值