C# 在C中隐藏/显示间距#
有4个对象A、B、C、D (A=cube1,B=Player,C=cover,D=cap1) D是C的孩子 如果距离(A、B之间)越来越近,则隐藏对象C将更改为SetActive(真) 所以我想展示对象C,但它不起作用 我该换什么C# 在C中隐藏/显示间距#,c#,unity3d,C#,Unity3d,有4个对象A、B、C、D (A=cube1,B=Player,C=cover,D=cap1) D是C的孩子 如果距离(A、B之间)越来越近,则隐藏对象C将更改为SetActive(真) 所以我想展示对象C,但它不起作用 我该换什么 public class distance : MonoBehaviour { public GameObject cube1; public GameObject Player; public GameObject cover;
public class distance : MonoBehaviour
{
public GameObject cube1;
public GameObject Player;
public GameObject cover;
public GameObject cap1;
float cubeDistance;
void Start()
{
cubeDistance = Vector3.Distance(cube1.transform.position, Player.transform.position);
Debug.Log(cubeDistance);
}
// Update is called once per frame
void Update()
{
if (cubeDistance < 30)
{ GameObject.Find("cover").transform.Find("cap1").gameObject.SetActive(true); }
else { GameObject.Find("cover").transform.Find("cap1").gameObject.SetActive(false); }
}
}
公共类距离:单一行为
{
公共游戏对象cube1;
公共游戏对象玩家;
公开游戏对象封面;
公共游戏对象cap1;
浮动容积;
void Start()
{
cubeDistance=Vector3.距离(cube1.transform.position,Player.transform.position);
Log(cubeInstance);
}
//每帧调用一次更新
无效更新()
{
如果(容积小于30)
{GameObject.Find(“cover”).transform.Find(“cap1”).GameObject.SetActive(true);}
else{GameObject.Find(“cover”).transform.Find(“cap1”).GameObject.SetActive(false);}
}
}
如果(立方体间距<30){
cap1.SetActive(真);
}
否则{
cap1.SetActive(假);
}
使用游戏对象引用使对象在游戏中处于活动/非活动状态
注意:GameObject.Find是一项繁重的操作,不应在更新中调用,因为它会影响性能。它不起作用,因为您只在
开始
功能中检查了一次距离。要检查A和B之间的距离,您需要首先计算Update
中每帧的距离。因此,在检查距离是否小于30之前,您应该将正在使用的距离代码输入到更新中。什么不起作用?什么没有发生,什么正在发生?请解释一点,你已经有了游戏对象“cap1”的参考资料。因此,请执行以下操作:if(cubeDistance<30){cap1.SetActive(true);}else{cap1.SetActive(false);}谢谢我没有那样想,谢谢!没问题:)你能选择我的答案作为正确答案吗?谢谢
if (cubeDistance < 30){
cap1.SetActive(true);
}
else {
cap1.SetActive(false);
}