[英]Unity move object in orbit of another object based on mouse(drag) position
我正在研究发生在宇宙中的模拟。
我想要实现的是(通过鼠标或触摸)以固定距离在地球周围移动 object。
我尝试使用 Unity 提供的RotateAround
function,但是我不知道在使用 ZC1C425268E68385D1AB4ZZ4C17A94F 时如何考虑鼠标 position。
所以我做的是以下。 首先我检查鼠标是否被按下。 如果是这样,我将获得鼠标 position 并将其转换为世界空间中的 position。 我想忽略 z 因为我不想在 z 轴上移动它。 但是如果你也想在 z 轴上移动它,你可以把 z 留在那里。
然后我检查了从行星到鼠标 position 的方向。 为了让它保持在轨道上,我将使用存储在 maxDistance 中的固定距离。
最后,如果我想让 object 观察地球,我将使用 LookAt。
public void Start()
{
maxDistance = Vector3.Distance(planet.position, transform.position);
}
public void Update()
{
if (Input.GetMouseButton(0))
{
var planetPos = planet.position;
var t = transform;
var mousePos = mainCamera.ScreenToWorldPoint(Input.mousePosition);
mousePos = new Vector3(mousePos.x, mousePos.y, planetPos.z);
var dir = (mousePos - planetPos).normalized;
t.position = dir * maxDistance;
t.LookAt(planetPos, Vector3.right);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.