Unity VR游戏开发中Translate遇到的坐标系问题

废话不说上代码

	void StickMovement_NotFixed()
	{
			if (OVRInput.Get(OVRInput.Button.PrimaryThumbstickUp)||OVRInput.Get(OVRInput.Button.PrimaryThumbstickDown) ||
	    OVRInput.Get(OVRInput.Button.PrimaryThumbstickLeft)||OVRInput.Get(OVRInput.Button.PrimaryThumbstickRight))
		{
		//if(OVRInput.Get(OVRInput.Button.PrimaryThumbstick)){
		Quaternion ort = CameraRig.centerEyeAnchor.rotation;
		Vector3 ortEuler = ort.eulerAngles;
		ortEuler.z = ortEuler.x = 0f;
		ort = Quaternion.Euler(ortEuler);

		Vector3 moveDir = Vector3.zero;
		Vector2 primaryAxis = OVRInput.Get(OVRInput.Axis2D.PrimaryThumbstick);
		moveDir += ort * (primaryAxis.x * Vector3.right);
		moveDir += ort * (primaryAxis.y * Vector3.forward);
		//_rigidbody.MovePosition(_rigidbody.transform.position + moveDir * Speed * Time.fixedDeltaTime);

		//这个按上摇杆前进是顺着VR看着的前方前进的
		_rigidbody.MovePosition(_rigidbody.position + moveDir * Speed * Time.deltaTime);
		//这个不能顺着VR看着的前方前进,是固定一个移动方向的,原因是translate默认是space.self
		this.transform.Translate(moveDir*Speed*Time.deltaTime);
		//这个就能和第一个效果一样了
		   this.transform.Translate(moveDir*Speed*Time.deltaTime,Space.World);
		}
	}

当我使用_rigidbody.MovePosition(_rigidbody.position + moveDir * Speed * Time.deltaTime);

的时候,摇杆控制前推,角色可以顺着VR的前进方向移动

当我使用this.transform.Translate(moveDir*Speed*Time.deltaTime);的时候

,摇杆前推,但是并不能使得角色向VR看着的方向移动

当我使用 this.transform.Translate(moveDir*Speed*Time.deltaTime,Space.World);的时候

摇杆前推,角色可以向VR看着的方向移动,和第一个效果一样

原因,translate接口第二个参数省缺的时候默认是Space.self,因此导致移动方向是按照自己的坐标,所以移动方向都是相对于自己来说的,所以都是固定的

但使用Space.world的时候,就是相对的世界坐标,自然就可以随着VR视线改变的方向进行对应的移动了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值