我的脚本将对象放在鼠标的位置,无论位置如何。
我想限制将对象放置在玩家精灵周围的小区域的位置。
如果鼠标X大于(X位置+一点点)的玩家X而不是对象不会实例化。我已经尝试了沿着这些方面的陈述,但却无法让它发挥作用。
这是展示位置脚本。
public GameObject seedlings;
public GameObject player;
Vector3 mousePOS = Input.mousePosition;
// Use this for initialization
void Start(){}
// Update is called once per frame
void Update()
{
PlantInGround();
}
void PlantInGround()
{
Vector3 mousePOS = Input.mousePosition;
if (Input.GetMouseButtonDown(0))
{
mousePOS.z = +12;
mousePOS = Camera.main.ScreenToWorldPoint(mousePOS);
Instantiate(seedlings, (mousePOS), Quaternion.identity);
Debug.Log(mousePOS);
}
}
感谢任何帮助。
答案 0 :(得分:2)
检查您的幼苗位置是否接近您的玩家位置:
float maxDist = 3F; //radius within the player that the seedling can be instantiated
if ( (mousePOS - player.transform.position).magnitude < maxDist )
{
//Do Something
}
你可以比较距离的平方,因为magnitude
涉及一个昂贵的Sqrt()
调用,但鉴于你只是在鼠标点击时这样做,它应该不是很重要。
当然,您必须确保您的播放器距离相机的前视方向约12个单位..鉴于您正在这样做:
mousePOS.z = +12;
mousePOS = Camera.main.ScreenToWorldPoint(mousePOS);
答案 1 :(得分:0)
这就是最终的工作。留给别人。老实说,我不知道为什么坐标排成一行。感谢@Lincon的帮助。
公共类PlantItem:MonoBehaviour {
public GameObject seedlings;
public GameObject player;
Vector3 mousePOS = Input.mousePosition;
void Update()
{
if (!Input.GetMouseButtonDown(0))
{
PlantInGround();
}
}
void PlantInGround()
{
Vector3 mousePOS = Input.mousePosition;
mousePOS.z = +12;
mousePOS = Camera.main.ScreenToWorldPoint(mousePOS);
if (((player.transform.position.y < mousePOS.y + 0.5) && (player.transform.position.y > mousePOS.y - 1.5)) && ((player.transform.position.x < mousePOS.x + 1) && (player.transform.position.x > mousePOS.x - 1)))
{
Instantiate(seedlings, mousePOS, Quaternion.identity);
}
}
}