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