if (my_Body.velocity.y<-3 && IsRayPlatform() == false && GameManager.Instance.IsGameOver == false)
{
//人物处理
spriteRenderer.sortingLayerName = "Default";
GetComponent<BoxCollider2D>().enabled = false;
GameManager.Instance.IsGameOver = true;
//结束面板
}
private bool IsRayPlatform()
{
RaycastHit2D hit = Physics2D.Raycast(rayDown.position, Vector2.down, 1f, platformLayer);
if(hit.collider != null)//往前跳的时候会触发hit.collder 会等于空
{
if (hit.collider.tag == "Platform")
{
return true;
}
}
return false;
}
两行代码因人而异,我自己写的时候发现这个游戏结束判定,my_Body.velocity.y只要跳跃就会下落,下落就会变化,hit.collider != null只要挑起就会有一次判定成NULL,也不知道怎么回事,所以没办法中的办法把velocity.y根据往前跳和后跳的幅度,改了一下。