【问题标题】:2D raycasting top down game in unity3Dunity3D 中的 2D 光线投射自上而下游戏
【发布时间】:2014-04-24 19:01:48
【问题描述】:

我正在制作一个类似口袋妖怪的游戏,你可以在其中四处走动。 这是一个自上而下的二维游戏。 但是我试图检测我面前的某个瓷砖。

我的角色在 Y 1,地图在 Y 0。 我已尝试转发 raycast,但它并没有真正起作用。

这是我尝试过的:

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;
        }

【问题讨论】:

  • "didnt really work" 很少告诉我们您遇到的问题。编译错误?运行时异常?这些是什么?您是否在 Google 上搜索过该错误以找出它是什么以及为什么会发生?还是意外的行为?发生了什么?你期望会发生什么?您已经尝试过什么解决此问题?请详细说明。
  • 这会在观察方向上寻找任何一棵树,不管它有多远,你应该限制长度,另外,如果你将地图组织在单元格中,是不是更容易测试附近的单元格?
  • 什么都没有发生,它没有检测到任何东西。我能够直接走过它。 @tnw
  • 您是否在地图图块中添加了对撞机?
  • 既然是 2D 游戏,您是否使用 2D 碰撞器和默认的 Unity 2D 设置?如果是这样,您应该使用Physics2D.Raycast,而 Vector3 将是 (0,1,0) 或 Vector3.Up

标签: c# unity3d 2d raycasting


【解决方案1】:

如果碰撞器是 2D 碰撞器,请使用 Physics2D.Raycast

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

希望对你有所帮助!

【讨论】:

    【解决方案2】:

    xDc#的时候为什么会有javascript变量:

    var distanceToGround = hit.distance;
    

    线7

    【讨论】:

    • 这应该是一条评论。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-26
    • 2014-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多