我如何与对象交互?

How do I interact with objects?

我的查询

我刚刚开始学习 Unity,我还没有找到关于如何在自顶向下游戏中与对象交互的综合指南。

我的解决方案

我已经使用以下代码为对象创建了一个半径,您可以在其中与所述对象进行交互,但是我不知道如何实施该计划。我见过人们使用 PlayerController,但我不确定我是否应该将它与 RigidBody 一起使用。这是我的 Interactable.cs:

using UnityEngine;

public class Interactable : MonoBehaviour
{
    public float radius = 1.0f;

    private void OnDrawGizmosSelected() {
        Gizmos.color = Color.yellow;
        Gizmos.DrawWireSphere(transform.position, radius);
    }
}

我需要什么帮助

有人能给我指出当玩家在半径内时如何与对象交互的正确方向,例如移除对象吗?

这段代码可以解决您的问题。您必须在每个 Interactable 对象的开头注入播放器实例。那么通过Vector.Distance测距离就够了。肯定有更短的距离。

private GameObject player;
public float radius = 1.0f;
public void OnEnable() => player = GameObject.FindWithTag("Player");
public void Update()
{
    var distance = Vector3.Distance(player.transform.position, transform.position);
    if (distance <= radius)
    {
        Debug.Log("Player is range of: "+name);
    }
}

还要记住你已经指定了玩家标签。