Unity-倾斜触摸在z轴而不是y上移动对象?

时间:2019-03-23 21:56:01

标签: c# unity3d game-physics

好吧,我使用资产商店中的Lean Touch,我可以沿x和y方向移动对象。物体具有重力影响的刚体,因此会掉落到平面上。当它们在平面上时(如AR),我需要垂直移动手指才能在z轴上移动对象。

我不知道该怎么做。这是发生转换的地方:

//REAL TRANSLATE
        protected virtual void Translate(Vector2 screenDelta)
        {
            // Make sure the camera exists
            var camera = LeanTouch.GetCamera(Camera, gameObject);

            if (camera != null)
            {
                // Screen position of the transform
                var screenPoint = camera.WorldToScreenPoint(transform.position);

                // Add the deltaPosition
                screenPoint += (Vector3)screenDelta;

                transform.position = camera.ScreenToWorldPoint(screenPoint);

这在LeanTranslate.cs中。如何在z轴而不是y上移动对象(理想情况下,如果它接触到平面)?

现在:

  if(transform.GetComponent<ObjectController>() != null && transform.GetComponent<ObjectController>().isOnPlane)
                {

                    Vector3 newDelta = new Vector3(screenDelta.x, 0, screenDelta.y*0.05f);
                    screenPoint += newDelta;

                } else {
                    screenPoint += (Vector3)screenDelta;
                }


                transform.position = camera.ScreenToWorldPoint(screenPoint);

错误:

enter image description here

1 个答案:

答案 0 :(得分:1)

现在,代码仅将screenDelta变量强制转换为Vector3。大致相当于“ new Vector3(screenDelta.x,screenDelta.y,0)”,它将z轴置零。

因此,您只需要用自定义行替换该行,即可将增量分配给正确的轴。