我正在制作一款类似口袋妖怪的游戏,您可以在其中四处走动。 这是一款自上而下的 2d 游戏。 然而,我正在尝试检测我面前的某个瓷砖。
我的角色在 Y 1, map 在 Y 0。 我已经尝试转发光线转换,但它并没有真正奏效。
这是我尝试过的:
if (Input.GetKey("w") && isMoving == false)
{
bool disableMove = false;
RaycastHit hit;
if (Physics.Raycast(transform.position, Vector3.forward, out hit, 2))
{
var distanceToGround = hit.distance;
Debug.Log("HIT");
if (hit.collider.gameObject.tag == "collision")
{
disableMove = true;
Debug.Log("Tree");
}
}
if (!disableMove)
{
Calculatewalk();
anim.Play("WalkingUp");
increment = 0;
isMoving = true;
startPoint = transform.position;
endPoint = new Vector3(transform.position.x, transform.position.y, transform.position.z + 1);
}
disableMove = false;
}
最佳答案
如果碰撞器是 2D 碰撞器,请使用 Physics2D.Raycast
如果您不使用新的 Unity 2D 系统,我们帮不了您太多。也许你不在正确的 Z 层。 Vector3.forward 似乎也不是很好。尝试使用 transform.forward .
希望对你有所帮助!
关于c# - unity3D 中的 2D 光线转换自上而下游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23277582/