0
在我的游戏中,玩家使用虚拟模拟来瞄准特定对象,当他释放模拟角色时应该朝该对象移动。 我要存储对象的位置(更像,玩家应移动基于对象的位置方向)的一个变量,但只有当它是光线与相撞的最后一件事:存储Raycast命中信息
Vector3 targetPos;
RaycastHit hit;
if (Physics.Raycast (pos, dir, out hit, 10, targetLayer)) {
Vector3 moveDir = (hit.point - transform.position).normalized;
targetPos = moveDir;
} else {
targetPos = Vector3.zero;
}
这样做这个targetPos
变量在释放模拟后总是返回到零,即使最后碰撞的对象是特定的对象。
编辑: 基于@MukeshSaini评论解决。谢谢,所有。
你的问题是什么? – Programmer
你的代码是否在if语句中出现?你可以通过一个'BreakPoint'和调试来确认。 – Hristo
@编程器,OP在释放模拟器后不希望'targetPos'值变为零。 @ Abdou023,你能不能分享更多的代码,我认为你甚至在用户发布模拟后会使用raycast,它可能会在'Physics.Raycast'中返回false,并在'else'块中将'targetPos'设置为'Vector3.zero'。 –