gpt4 book ai didi

c# - 单击一个对象

转载 作者:太空宇宙 更新时间:2023-11-03 23:03:55 24 4
gpt4 key购买 nike

所以我将游戏中的 map 分成了不同的区域。每一个都在Area数组中做成一个单独的数组。我目前无法点击该对象。当玩家点击游戏中的物体时,他点击的 map 部分应该弹出一定量,当他点击另一部分时,该部分应该弹出,而另一部分应该回到原来的位置。我目前正在让那个对象在我点击它时被销毁,但它甚至不会在游戏中被选中。

using UnityEngine;   
using System.Collections;

public class AreaSelection : MonoBehaviour {
public GameObject[] Areas;

void Start()
{
Areas = new GameObject[20];
}
void Update()
{
}
void OnMouseDown()
{
Destroy(this.gameObject);
}

最佳答案

"OnMouseDown is called when the user has pressed the mouse button while over the GUIElement or Collider."

-- Documentation

这意味着您需要在附加此脚本的 GameObject 上使用 Collider。 OnMouseDown 只会在它所附加的 GameObject 上触发。因此,如果您在某种没有 Collider 或大小或任何东西的管理器上使用此脚本,您将无法使用 OnMouseDown。如果您想采用我推荐的另一条路线,您可以将逻辑重新定位到 Update() 方法,就像这样:

(来 self 的一个二维项目)```

RaycastHit2D hit;
public LayerMask mask;
Vector2 mousePos;
GameObject selectedObject;


void Update() {

// If mouse left click is pressed
if (Input.GetMouseButtonDown(0)) {
mousePos = (Vector2)Camera.main.ScreenToWorldPoint(Input.mousePosition);
hit = Physics2D.Raycast(mousePos, Vector2.zero, mask);

if (hit.collider != null)
{
selectedObject = hit.collider.gameObject;
}
}
}

请注意,您必须在检查器中将公共(public) LayerMask 设置为仅命中您想要命中的对象。

使用此脚本,您应该能够从屏幕向鼠标发送 Raycast,如果它击中任何具有 LayerMask 中选定图层的游戏对象,它将将该对象放入 SelectedObject(一旦您拥有游戏对象,您就可以用它做任何你想做的事)。

关于c# - 单击一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42027394/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com