C# 在鼠标位置实例化对象
我已经创建了一个脚本,该脚本应该根据鼠标位置实例化游戏对象,但出现了一些问题。它只是在屏幕的一个位置和中间被实例化。C# 在鼠标位置实例化对象,c#,unity3d,C#,Unity3d,我已经创建了一个脚本,该脚本应该根据鼠标位置实例化游戏对象,但出现了一些问题。它只是在屏幕的一个位置和中间被实例化。 using System.Collections; using System.Collections.Generic; using UnityEngine; public class LineInstantiater : MonoBehaviour { public GameObject lineprefab; private GameObject lineh
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LineInstantiater : MonoBehaviour {
public GameObject lineprefab;
private GameObject linehandler;
private Vector3 mousepos;
void Update(){
if (Input.GetMouseButton (0)) {
mousepos = Camera.main.ScreenToWorldPoint (Input.mousePosition);
linehandler = Instantiate (lineprefab,Camera.main.ScreenToWorldPoint(Input.mousePosition),Quaternion.identity) as GameObject ;
linehandler.transform.position = mousepos;
}
}
}
请告诉我我的脚本有什么问题 问题在于
Input.mousePosition
没有z轴,因为鼠标坐标只有x轴和y轴。z
轴只是0
,因此在使用Camera.main.ScreenToWorldPoint
时返回错误的位置
您需要执行Input.mousePosition代码>,手动将其z轴值修改为任意值>0
。通常,10
可以这样做,但如果不够,您可以修改它。然后,您可以将修改后的Vector3
传递给Camera.main.ScreenToWorldPoint(mousepos)
函数
public GameObject lineprefab;
private GameObject linehandler;
private Vector3 mousepos;
void Update()
{
if (Input.GetMouseButtonDown(0))
{
mousepos = Input.mousePosition;
mousepos.z = 10;
mousepos = Camera.main.ScreenToWorldPoint(mousepos);
linehandler = Instantiate(lineprefab, mousepos, Quaternion.identity) as GameObject;
}
}
或
public GameObject lineprefab;
private GameObject linehandler;
void Update()
{
if (Input.GetMouseButtonDown(0))
{
Ray rayCast = Camera.main.ScreenPointToRay(Input.mousePosition);
linehandler = Instantiate(lineprefab, rayCast.GetPoint(10), Quaternion.identity) as GameObject;
}
}
不相关:
我注意到您正在使用Input.GetMouseButton
。您可能希望Input.GetMouseButtonDown
作为Input.GetMouseButtonDown
被调用一次,直到释放键为止<代码>输入。按住该键时,会重复调用GetMouseButton
,您可以轻松创建数千个对象。您好,您有什么问题?出了什么问题?如果您有任何错误,请将其发布。@程序员检查它是否已编辑。我总是忘了提那件事。对不起,我们不知道你有什么问题。“在一个位置实例化”是什么意思?预设没有实例化鼠标箭头所在的位置?这是什么类型的物体?用户界面,二维还是三维对象?我建议你发布截图too@Programmer不实例化鼠标箭头所在的位置。答案取决于它是什么类型的对象。用户界面(图像、原始图像组件)、2D(喷绘渲染器)或3D(网格渲染器)对象?