using UnityEngine;
public class Sword : MonoBehaviour
{
[SerializeField] GameObject swordUi;
void OnCollisionEnter(Collision collision)
{
// assuming your player has the "Player" tag
if (collision.gameObject.CompareTag("Player"))
{
swordUi.SetActive(true);
}
}
void OnCollisionExit(Collision collision)
{
if (collision.gameObject.CompareTag("Player"))
{
swordUi.SetActive(false);
}
}
}
1条答案
按热度按时间g6baxovj1#
在附加到剑的脚本中,创建一个
GameObject
类型的变量,并将其分配给检查器中的UI元素。然后在这个变量上调用
.SetActive(true)
当你检测到玩家进入与剑碰撞。要检测到你可以使用OnCollisionEnter,或者如果你的剑的碰撞器是一个触发器,则使用OnTriggerEnter。如果您在玩2D游戏,则使用2D等效物(OnCollisionEnter2D或OnTriggerEnter2D)
最后使用OnCollisionExit.(或触发器/ 2D等效物)在玩家离开时再次禁用它。
所以基本上: