在我的游戏中,玩家使用虚拟模拟来瞄准一个特定的对象,当他释放角色应该向该对象移动的模拟时。我想在变量中存储对象的位置(更像玩家应该根据对象的位置移动的方向),但前提是光线与之发生碰撞的最后一件事:
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评论解决。谢谢大家。
发布于 2017-05-19 12:20:32
我认为,即使在用户发布模拟之后,您仍在使用射线广播,这可能会返回Physics.Raycast的false,并在else块中将targetPos设置为Vector3.zero。
只有当用户使用模拟时,才能将条件设置为raycast,这将在用户释放模拟后停止不必要的其他块执行,而targetPos将保留其正确的值。
https://stackoverflow.com/questions/44058980
复制相似问题