Raycast2D没有按预期工作

时间:2017-11-30 21:28:36

标签: c# unity3d raycasting

我正在做一个马里奥原型和(在这种情况下)我正在使用两个Raycast,一个从马里奥指向他的头顶。当mario接触空中的块时使用。第二个光线投射用于脚底以检测他何时踩到Goomba(敌人)。我在下面添加了一个函数,它显示我在两条光线上使用相同的结构和"如果"陈述,但尽管如此,只有第一个(在头上)有效。

public void marioRaycast()
{
    RaycastHit2D hitUp = Physics2D.Raycast(transform.position, new Vector2(0, 1), hitUpDistance); // Raycast som pekar upp, +1
    RaycastHit2D hitDown = Physics2D.Raycast(transform.position, new Vector2(0, -1), hitDownDistance); // Raycast som pekar ner, -1

    Debug.DrawRay(transform.position, new Vector2(0, hitUpDistance), Color.green); // Visualiserar en "raycaststråle" för att debugga.
    Debug.DrawRay(transform.position, new Vector2(0, hitDownDistance), Color.green); // Visualiserar en "raycaststråle" för att debugga.

    if (hitUp && hitUp.collider.tag == "CoinBox")
    {
        questionObject = hitUp.collider.gameObject;
        if (questionObject.GetComponent<QuestionmarkBox>().coinBoxStatus)
        {
            if (questionObject.GetComponent<QuestionmarkBox>().getRandomNr() <= 4) // "40%" för poäng ifrån box
            {
                ScoreHandler.AddScore(100);
            }

            else // Låg chans för powerup.
            {
                questionObject.GetComponent<QuestionmarkBox>().instantiatePowerUp();
            }
        }
        questionObject.GetComponent<QuestionmarkBox>().coinBoxStatus = false; // Stänger av blockets relevans efter kollision
    }


    if (hitDown && hitDown.collider.tag == "enemyGoomba")
    {
        Debug.Log("You are now in the goomba if");
        GetComponent<Rigidbody2D>().AddForce(Vector2.up * 100);
        GetComponent<Rigidbody2D>().AddForce(Vector2.right * 200);
        Destroy(hitDown.collider.gameObject); // Förstör goomban.
    }


}

如果您需要有关脚本的更多信息,请告诉我。而在最后&#34;如果&#34;声明它还没有到达&#34; Debug.Log&#34;然而,这是我的目标。它似乎没有听到最后的声明或者可能是光线/可能的敌人?

我没看到第二条光线是如何工作的,只是因为早期的光线工作时,除了一些&#34;值&#34;之外,它们两者都没有区别。它可能是什么?

0 个答案:

没有答案