在unity3D中的2D光线投射自上而下的游戏

时间:2014-04-24 19:01:49

标签: c# unity3d 2d raycasting

我正在制作一个类似游戏的宠物小精灵,你四处走动。 这是一款自上而下的2D游戏。 但是我试图在我面前检测某个瓷砖。

我的角色是Y 1,地图是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;
        }

2 个答案:

答案 0 :(得分:2)

如果对撞机是2D对撞机,请使用Physics2D.Raycast

如果您不使用新的Unity 2D系统,我们无法帮助您。也许你不在正确的Z层。 Vector3.forward似乎也不是很好。尝试使用transform.forward

我希望我能帮到你!

答案 1 :(得分:-2)

xD为什么在javascript写作时有c#变量:

var distanceToGround = hit.distance;

7