【发布时间】:2021-09-20 15:01:30
【问题描述】:
我正在玩游戏,我一直在寻找 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;
【问题讨论】:
-
doesn't detect every collision.. 例如哪些?
标签: c# unity3d raycasting