c# - 一个看似简单的 RaycastALL 统一问题我想不通
问题描述
我正在玩游戏,我一直在寻找 3 个小时,为什么我的 RaycastALL 没有检测到每一次碰撞。这是处理此问题的代码。非常感谢您的宝贵时间。我可以回答您关于我的项目的所有问题:
case (PlayerState.CarryingRaw):
//Debug.Log("Carrying" + pickedUpRawItems.Count + "items");
//Debug.Log(pos.x +","+ pos.y);
hits = Physics2D.RaycastAll(transform.position, new Vector2(pos.x-5,pos.y),20,8);
Debug.DrawLine(transform.position, new Vector2(pos.x - 5, pos.y), Color.red, 2);
for (int i = 0; i < hits.Length; i++)
{
Debug.Log(hits[i].transform.name);
}
//Debug.Log("Raycasted" + hits.Length + "Objects");
for (int i = 0; i < hits.Length; i++)
{
{
if (hits[i].transform.tag == pickedUpRawItems[pickedUpRawItems.Count - 1].transform.tag)
{
Debug.Log(hits[i].transform.tag);
Debug.Log(pickedUpRawItems[pickedUpRawItems.Count - 1].transform.tag);
hits[i].transform.GetComponent<BoxCollider2D>().enabled = false;
hits[i].transform.GetComponent<ItemScript>().currentState = ItemScript.ObjectState.PickedUp;
hits[i].transform.localScale = sizeChange;
pickedUpRawItems.Add(hit.transform.gameObject);
}
}
}
break;
case (PlayerState.Working):
break;
case (PlayerState.Free):
Debug.Log("youhou + State.Free");
hit = Physics2D.Raycast(transform.position, new Vector2(pos.x - 5, pos.y));
if (hit)
{
hit.transform.GetComponent<BoxCollider2D>().enabled = false;
Debug.Log("youhou + hit.Free");
hit.transform.GetComponent<ItemScript>().currentState = ItemScript.ObjectState.PickedUp;
hit.transform.localScale = sizeChange;
pickedUpRawItems.Add(hit.transform.gameObject);
currentState = PlayerState.CarryingRaw;
}
break;
解决方案
没有足够的信息来回答这个问题,但我会开始通过在所有地方添加 Debug.Log() 调用来进行故障排除。注销被击中的对撞机名称,调用它的情况,在所有情况下都使用您的调试行。
出于性能原因,我还建议添加图层蒙版,以免尝试对每一层进行光线投射。
另外,检查您的物理碰撞设置。如果您转到 Project Settings > Physics2d,您的光线投射对象是否设置为与您尝试进行光线投射的所有对象发生碰撞?
您尝试对其进行射线投射的所有项目是否都有对撞机?
你的光线投射距离够长吗?
这是一个类似的问题。
https://forum.unity.com/threads/physics2d-raycastall-not-detecting-colliders-minor-problem.862744/
推荐阅读
- python - Numpy 数组 - 矩阵乘法数组但取 1 - 第二个数组中某些列中的元素
- javascript - 如何根据所选值从 JSON 数组构建列表?
- php - 关闭浏览器时存储登录 cookie
- javascript - 在强大的上传中使用 compress_image 时“文件不存在”
- android - 如何在 Kotlin 中使用 when 表达式一次初始化 3 个变量
- ansible - 加密 ansible vault-password-file
- javascript - GetStatusHistoryForPastWeek 修改
- excel - 运行时错误“1004”,无法设置范围类的隐藏属性
- c# - 在另一个服务上运行的服务在登台服务器中抛出 AggregateException(不在生产中)
- python - 从熊猫数据框中获取垂直到水平列表