如何舍入 x/z 鼠标位置以及特定的 y 位置,然后在那里实例化一个对象?
How to get rounded x/z position of mouse, along with a certain y position, then instantiate an object there?
我正在尝试制作小型建筑游戏,我想在其中获取鼠标的 x/z 位置以及特定的 y 位置,然后将它们四舍五入为整数。然后我在那个最终位置实例化一个对象。它一直在数百个位置生成方块,例如,当我在 0,0,0 处单击时,它会在 580 处生成一个方块。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Building : MonoBehaviour
{
public GameObject Block;
void Update(){
int mousePosX = Mathf.RoundToInt(Input.mousePosition.x);
int mousePosZ = Mathf.RoundToInt(Input.mousePosition.z);
if(Input.GetButtonDown("Fire1")){
Instantiate(Block, new Vector3(mousePosX, 0.15f, mousePosZ), Quaternion.identity);
}
}
}
在你的例子中,因为你试图找到地面上的点来建造你的街区,你首先需要用一个碰撞器(一个盒子碰撞器,覆盖地面是一个很好的选项)。
现在,将您的更新语句修改为如下所示:
void Update ( )
{
if ( Input.GetButtonDown ( "Fire1" ) )
{
if ( Physics.Raycast ( Camera.main.ScreenPointToRay ( Input.mousePosition ), out var hit ) )
{
var point = hit.point;
point.x = Mathf.RoundToInt ( hit.point.x );
point.z = Mathf.RoundToInt ( hit.point.z );
point.y = 0.15f;
Instantiate ( Block, point, Quaternion.identity );
}
}
}
您现在正在做的是从相机中找到一条光线,通过鼠标位置进入场景。它落地的地方是 hit.position
Vector3。正是在这一点上,您想四舍五入到一个整数值,然后实例化。
此外,您也可以只在按下开火按钮后才检查鼠标位置。
我正在尝试制作小型建筑游戏,我想在其中获取鼠标的 x/z 位置以及特定的 y 位置,然后将它们四舍五入为整数。然后我在那个最终位置实例化一个对象。它一直在数百个位置生成方块,例如,当我在 0,0,0 处单击时,它会在 580 处生成一个方块。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Building : MonoBehaviour
{
public GameObject Block;
void Update(){
int mousePosX = Mathf.RoundToInt(Input.mousePosition.x);
int mousePosZ = Mathf.RoundToInt(Input.mousePosition.z);
if(Input.GetButtonDown("Fire1")){
Instantiate(Block, new Vector3(mousePosX, 0.15f, mousePosZ), Quaternion.identity);
}
}
}
在你的例子中,因为你试图找到地面上的点来建造你的街区,你首先需要用一个碰撞器(一个盒子碰撞器,覆盖地面是一个很好的选项)。
现在,将您的更新语句修改为如下所示:
void Update ( )
{
if ( Input.GetButtonDown ( "Fire1" ) )
{
if ( Physics.Raycast ( Camera.main.ScreenPointToRay ( Input.mousePosition ), out var hit ) )
{
var point = hit.point;
point.x = Mathf.RoundToInt ( hit.point.x );
point.z = Mathf.RoundToInt ( hit.point.z );
point.y = 0.15f;
Instantiate ( Block, point, Quaternion.identity );
}
}
}
您现在正在做的是从相机中找到一条光线,通过鼠标位置进入场景。它落地的地方是 hit.position
Vector3。正是在这一点上,您想四舍五入到一个整数值,然后实例化。
此外,您也可以只在按下开火按钮后才检查鼠标位置。