我正在做一个马里奥原型和(在这种情况下)我正在使用两个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;之外,它们两者都没有区别。它可能是什么?