【发布时间】:2020-06-19 19:12:40
【问题描述】:
我正在开发一个 RTS,并且想在鼠标位置上放置一个游戏对象。这可行,但对象放置在错误的位置。
下图显示了我的鼠标所在位置的光线投射。但是对象(立方体,地形的左下角)在光线投射附近没有被实例化。
这是我用来获取位置的代码,我做错了什么?
toBuild.build(Camera.main.ScreenToWorldPoint(hit.point));
【问题讨论】:
-
你能发布更多你的代码吗?你为什么使用
ScreenToWorldPoint?您似乎使用了已经在世界空间中产生结果的光线投射.. -
如果我使用光线投射中的点,它会被实例化为更接近鼠标位置,但仍然不正确。实际的实例化是通过:
Instantiate(this, location, Quaternion.identity)这是游戏对象,位置是来自光线投射的位置 -
那么......你能展示你的光线投射等的完整代码吗?
-
是的,当然在这里,它在不同的类中分开,但这里是调用堆栈:RaycastHit hit; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); Debug.DrawRay(ray.origin, ray.direction * 500, Color.blue); ... Physics.Raycast(ray, out hit, 500); ... toBuild.build(hit.point); ... 变换 transform = Instantiate(this, location, Quaternion.identity).GetComponent
();就是这样
标签: unity3d position raycasting