unity3d - 如何从游戏对象变换前视角度夹住 x 轴?
unity3d - how to clamp x axis from gameobject transform forward perspective?
我根据鼠标位置用光线投射移动了物体
,我想知道如何在任何给定位置夹紧并旋转相对于物体向前变换的物体 x 轴?
,不是一般相对于世界有什么想法吗? , 提前致谢。
下面的代码显示了我如何根据鼠标位置实现对象移动的基本方法
现在我想夹住它
Ray ray = mainCamera.ScreenPointToRay(Input.mousePosition);
plane = new Plane(Vector3.up, transform.position);
float enter;
if(plane.Raycast(ray,out enter))
{
hitPoint = ray.GetPoint(enter);
transform.position = hitPoint;
}
如果我对你的理解正确的话,你想要实现的是仅在其 local x 轴上移动对象。
然后做这样的事情(看我惊人的绘画技巧)
您可以使用 Vector3.Project
来实现,例如
var ray = mainCamera.ScreenPointToRay(Input.mousePosition);
var plane = new Plane(Vector3.up, transform.position);
if(plane.Raycast(ray, out var enter))
{
var hitPoint = ray.GetPoint(enter);
var actualPositionDelta = hitPoint - transform.position;
var mappedPositionDelta = Vector3.Project(actualPositionDelta, transform.right);
transform.position += mappedPositionDelta;
}
我根据鼠标位置用光线投射移动了物体 ,我想知道如何在任何给定位置夹紧并旋转相对于物体向前变换的物体 x 轴? ,不是一般相对于世界有什么想法吗? , 提前致谢。 下面的代码显示了我如何根据鼠标位置实现对象移动的基本方法 现在我想夹住它
Ray ray = mainCamera.ScreenPointToRay(Input.mousePosition);
plane = new Plane(Vector3.up, transform.position);
float enter;
if(plane.Raycast(ray,out enter))
{
hitPoint = ray.GetPoint(enter);
transform.position = hitPoint;
}
如果我对你的理解正确的话,你想要实现的是仅在其 local x 轴上移动对象。
然后做这样的事情(看我惊人的绘画技巧)
您可以使用 Vector3.Project
来实现,例如
var ray = mainCamera.ScreenPointToRay(Input.mousePosition);
var plane = new Plane(Vector3.up, transform.position);
if(plane.Raycast(ray, out var enter))
{
var hitPoint = ray.GetPoint(enter);
var actualPositionDelta = hitPoint - transform.position;
var mappedPositionDelta = Vector3.Project(actualPositionDelta, transform.right);
transform.position += mappedPositionDelta;
}