使用leapmotion控制Unity3d界面
我知道我可以在Unity3D游戏中使用leapmotion 我看不到任何信息的是,我是否可以在构建游戏时使用它与资产、模型等进行实际交互。例如,围绕x轴旋转游戏对象或放大或缩小视图使用leapmotion控制Unity3d界面,unity3d,leap-motion,Unity3d,Leap Motion,我知道我可以在Unity3D游戏中使用leapmotion 我看不到任何信息的是,我是否可以在构建游戏时使用它与资产、模型等进行实际交互。例如,围绕x轴旋转游戏对象或放大或缩小视图 这可能吗 是的,这是可能的,但需要一些还没有人编写的脚本(ASFAIK)。这是一个非常粗略的例子,因为我今天也对这个问题很好奇 它所做的只是移动、缩放和旋转一个选定的游戏对象——它并没有试图以一种好的方式做到这一点——它只是一个概念证明。要使其工作,您必须将跳跃坐标和旋转合理地转换为单位值。若要尝试,请将此脚本放在名
这可能吗 是的,这是可能的,但需要一些还没有人编写的脚本(ASFAIK)。这是一个非常粗略的例子,因为我今天也对这个问题很好奇 它所做的只是移动、缩放和旋转一个选定的游戏对象——它并没有试图以一种好的方式做到这一点——它只是一个概念证明。要使其工作,您必须将跳跃坐标和旋转合理地转换为单位值。若要尝试,请将此脚本放在名为“编辑器”的文件夹中,在场景视图中选择一个游戏对象,并按住一个键,同时将手移到跳跃上方。正如我所说的,这些动作都不能真正用于编辑对象,但您可以看到,通过一些合理的逻辑,这是可能的
@CustomEditor (Transform)
class RotationHandleJS extends Editor {
var controller = new Leap.Controller();
var position;
var localScale;
var localRotation;
var active = false;
function OnSceneGUI () {
e = Event.current;
switch (e.type) {
case EventType.KeyDown:
position = target.transform.position;
localScale = target.transform.localScale;
localRotation = target.transform.localRotation;
active = true;
Debug.Log("editing");
break;
case EventType.KeyUp:
active = false;
target.transform.position = position;
target.transform.localScale = localScale;
EditorUtility.SetDirty (target);
break;
}
if(active){
frame = controller.Frame();
ten = controller.Frame(10);
scale = frame.ScaleFactor(ten);
translate = frame.Translation(ten);
target.transform.localScale = localScale + new Vector3(scale, scale, scale);
target.transform.position = position + new Vector3(translate.x, translate.y, translate.z);
leapRot = frame.RotationMatrix(ten);
quats = convertRotation(leapRot);
target.transform.localRotation = quats;
}
}
var LEAP_UP = new Leap.Vector(0, 1, 0);
var LEAP_FORWARD = new Leap.Vector(0, 0, -1);
var LEAP_ORIGIN = new Leap.Vector(0, 0, 0);
function convertRotation(matrix:Leap.Matrix) {
var up = matrix.TransformDirection(LEAP_UP);
var forward = matrix.TransformDirection(LEAP_FORWARD);
return Quaternion.LookRotation(new Vector3(forward.x, forward.y,forward.z), new Vector3(up.x, up.y, up.z));
}
}