我正忙于处理使用RTS风格相机的东西,我希望一个物体跟随鼠标光标,但始终保持在相同的Y轴上。摄像机位置设置为0,15,-15
我已经玩了一段时间了,这是我能想到的最好的:
Ray ray = Camera.mainCamera.ScreenPointToRay(Input.mousePosition);
Vector3 point = ray.GetPoint(5);
transform.position = point;
print (point);
任何帮助都将不胜感激。
答案 0 :(得分:1)
你是在正确的轨道上,但你需要使用该光线投射到某些东西上以获得世界位置。
由于它的rts我认为地形有些水平,在这种情况下,很容易将平面放置在所需的高度。如果不是这种情况,我建议遵循@The Ryan建议并存储前一个y值。
在任何一种情况下,你都需要将你使用光线投射的东西放在与其他东西不同的层中,这样你就不会把东西放在其他单位之上
Ray ray = Camera.mainCamera.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if(Physics.Raycast(ray, out hit, maxDistance, layerMask))
{
float oldY = transform.position.y;
transform.position.Set(hit.point.x, oldY, hit.point.z);
}