C# 为我的沙盒游戏在鼠标位置实例化一个预置
我无法在鼠标位置实例化预置 我尝试在当前鼠标位置实例化预置,但单击后,块显示在层次中,而不是场景中。它还创建4-5个预制件C# 为我的沙盒游戏在鼠标位置实例化一个预置,c#,unity3d,C#,Unity3d,我无法在鼠标位置实例化预置 我尝试在当前鼠标位置实例化预置,但单击后,块显示在层次中,而不是场景中。它还创建4-5个预制件 using UnityEngine; public class Building : MonoBehaviour { public GameObject block; void Update() { if (Input.GetMouseButton(0)) { Instantiate(block
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);
}
}
}
我想创建一个预制块,并希望它显示在场景视图中。Input.mousePosition是鼠标在屏幕上的坐标。使用Camera.ScreenToViewportPoint获取世界位置 块将不会显示在场景中,因为它的位置可能类似于(500300,0),非常远。选择层次结构中的块,然后按“F”键查看它 只要按住鼠标,Input.GetMouseButton()就会一直启动。将其更改为Imput.GetMouseButtonDown()
您需要从屏幕空间转换到世界空间 一种方法是使用:
如果您想在离摄影机更远的地方繁殖,请查看。它给了我一个错误,对象引用未设置为对象建筑的实例。cs:11确保在“检查器”选项卡中指定了块,还确保您在游戏视图中,并且有一个摄影机确保您的摄影机标记为“主摄影机”没有问题,很高兴我能帮忙!
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);
}
}
}
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);
}
}