c# - 对象设置为活动但提醒未活动
问题描述
我试图解决一个问题。我正在做一个VR游戏。我设置了一个不可见的对撞机作为从控制器上的手部虚拟形象切换到游戏中其他东西的触发器。问题是触发器正在被识别,但将其设置为活动状态是行不通的。我会很感激任何提示
我试图在更新方法和触发方法中切换对象。以前在更新方法中,它没有从触发器传递数据。但是,如果我在触发器中有它,则可以识别布尔值,但不会将对象设置为活动状态。
public GameObject leftHand;
public GameObject leftHandOnChest;
public bool cprColliderLeft = false;
void Start()
{
leftHandOnChest.SetActive(false);
leftHand.SetActive(true);
}
void Update()
{
}
private void OnTriggerEnter(Collider collider)
{
if (collider.tag == "CPRStart")
{
cprColliderLeft = true;
if(cprColliderLeft == true)
{
leftHandOnChest.SetActive(true);
leftHand.SetActive(false);
}
}
}
private void OnTriggerStay(Collider collider)
{
if (collider.tag == "CPRStart")
{
cprColliderLeft = true;
if (cprColliderLeft == true)
{
leftHandOnChest.SetActive(true);
leftHand.SetActive(false);
}
}
}
private void OnTriggerExit(Collider collider)
{
cprColliderLeft = false;
if(cprColliderLeft == false)
{
leftHandOnChest.SetActive(false);
leftHand.SetActive(true);
}
}
我的目标是将一个对象从活动状态切换到另一个对象。所以一个会从现场消失,另一个会出现。谢谢你的帮助
解决方案
我建议这个简化的代码:
public GameObject leftHand;
public GameObject leftHandOnChest;
void Start()
{
leftHandOnChest.SetActive(false);
leftHand.SetActive(true);
}
private void OnTriggerEnter(Collider collider)
{
if (collider.compareTag ("CPRStart"))
{
leftHandOnChest.SetActive(true);
leftHand.SetActive(false);
}
}
private void OnTriggerExit(Collider collider)
{
if (collider.compareTag ("CPRStart"))
{
leftHandOnChest.SetActive(false);
leftHand.SetActive(true);
}
}
但我想你的问题可能是一些进入/退出连锁反应。我猜标签“CPRStart”在 leftHand - 所以当你输入时,你禁用它 - 这会导致exit被调用。
因此我建议只禁用渲染器:
public GameObject leftHand;
public GameObject leftHandOnChest;
private MeshRenderer hand_renderer;
void Start()
{
leftHandOnChest.SetActive(false);
leftHand.SetActive(true);
hand_renderer = leftHand.getComponent <MeshRenderer> ();
}
private void OnTriggerEnter(Collider collider)
{
if (collider.compareTag ("CPRStart"))
{
leftHandOnChest.SetActive(true);
hand_renderer.enabled = false;
}
}
private void OnTriggerExit(Collider collider)
{
if (collider.compareTag ("CPRStart"))
{
leftHandOnChest.SetActive(false);
hand_renderer.enabled = true;
}
}
推荐阅读
- c# - 类库中的 C# Adapt BeginInvoke
- php - 如何向我的 HTML 表格添加分页?我的表是通过使用 php 的 while 循环动态填充的
- excel - 如何复制和转置 VBA
- c# - 使用自己的名称调用外部库变量
- javascript - Mobile Safari - iframe 固定内容
- node.js - 通过在 Mongodb 中应用条件使用 $find 查询嵌套对象
- python - 认知面部 API Python 3.5。坏形象
- c# - 在 linux 上使用带有 dotnet core 的 Jenkins SonarQube MSBuild 插件
- quartz-scheduler - QuartzScheduler 触发器问题
- windows - Kubernetes LoadBalancer 没有响应?(适用于 Windows 的 Docker)