c# - unity3D 中的 2D 光线转换自上而下游戏

标签 c# unity3d 2d raycasting

我正在制作一款类似口袋妖怪的游戏,您可以在其中四处走动。 这是一款自上而下的 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/

相关文章:

c# - 为什么是 float.Epsilon 而不是零?

C++ 2D 如何将 "stick"宇宙飞船上的排气 Sprite 并允许它相应地旋转?

java - 如何在java中生成二维曲线

c# - 存储库模式,应该是 1 :1?

c# - 如何找到从第三类继承的非单开发类的类

c# - Image.FromFile 为什么读取位图比读取 jpeg 文件快

c# - Unity3D最好的脚本语言是什么

c++ - 带 OpenGL 的 2D 引擎 : Use Z buffer or own implementation for sprite sorting?

c# - 寻找替代 for 循环的 linq 解决方案

c# - 在 .NET Core C# 中使用证书进行加密和解密