Unity - 精益触摸在z轴上移动物体而不是y?

问题描述 投票:0回答:1

好吧,我在资产商店使用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

c# unity3d game-physics
1个回答
1
投票

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

因此,您只需要将该行替换为将delta指定给正确轴的自定义行。

© www.soinside.com 2019 - 2024. All rights reserved.