好吧,我在资产商店使用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);
错误:
现在代码只是将screenDelta变量强制转换为Vector3。这大致相当于“new Vector3(screenDelta.x,screenDelta.y,0)”,它使z轴归零。
因此,您只需要将该行替换为将delta指定给正确轴的自定义行。