我不能在我的鼠标位置实例化一个预制件。
我尝试在当前鼠标位置实例化预制块,但单击时,块显示在层次中,而不是场景中。它还可以创建4-5个预制件。
using UnityEngine;
public class Building : MonoBehaviour
{
public GameObject block;
void Update()
{
if (Input.GetMouseButton(0))
{
Instantiate(block, new Vector3(Input.mousePosition.x, Input.mousePosition.y, 0f), Quaternion.identity);
}
}
}我想创建一个预制的块,我希望它显示在场景视图中。
发布于 2019-07-27 03:30:48
Input.mousePosition是鼠标在屏幕上的坐标。使用Camera.ScreenToViewportPoint获取世界位置。
块不会显示在场景中,因为它的位置可能类似于(500,300,0),这是非常远的。选择层次结构中的块并按"F“键查看它。
只要鼠标被按住,Input.GetMouseButton()就会一直触发。将其更改为Imput.GetMouseButtonDown()
using UnityEngine;
public class Building : MonoBehaviour {
public GameObject block;
void Update()
{
if (Input.GetMouseButtonDown(0))
{
Vector3 pos = Camera.main.ScreenToViewportPoint(Input.mousePosition);
Instantiate(block, pos, Quaternion.identity);
}
}
}发布于 2019-07-27 03:31:40
你需要从屏幕空间转换到世界空间。
其中一种方法是使用Camera.ScreenToWorldPoint
private Camera mainCam;
void Start()
{
mainCam = Camera.main;
}
void Update()
{
if (Input.GetMouseButtonDown(0))
{
Vector3 blockPos = mainCam.ScreenToWorldPoint(Input.mousePosition);
Instantiate(block, blockPos, 0f), Quaternion.identity);
}
}如果你想在离摄影机更远的地方产卵,可以查看Camera.ScreenPointToRay。
https://stackoverflow.com/questions/57225928
复制相似问题