前言
休闲跑酷的人物与金币问题
1. 如何生成金币
通过随机生成金币阵列随机生成金币
> /// </summary>
> public static void RandomCreate(Vector3 startPos)
> {
> var id = Random.Range(0, 4);
> if(null == s_coinListPrefab[id])
> {
> // 加载金币预设
> s_coinListPrefab[id] = Resources.Load<GameObject>("CoinList" + id);
> }
> // 实例化预设
> var coinListRoot = Object.Instantiate(s_coinListPrefab[id]);
> var coinBhv = coinListRoot.AddComponent<Coin5>();
> // 设置初始坐标
> coinBhv.SetPos(startPos);
> }
2.如何判断人物吃到金币
如下图中玩家碰到金币,金币便会消失并在金币数处加一
/// 触发器事件
/// </summary>
private void OnTriggerEnter2D(Collider2D collision)
{
if ("Coin" == collision.gameObject.tag)
{
// 吃到金币
Destroy(collision.gameObject);
GameMgr.instance.score++;
}
}
2.如何判断玩家落地还是死亡
落地:
死亡:
代码如下:
/// 碰撞事件方法
/// </summary>
/// <param name="other"></param>
void OnCollisionEnter2D(Collision2D other)
{
switch (other.gameObject.tag)
{
case "Ground":
{
// 碰撞到地面
m_ani.SetBool("IsJumping1", false);
m_ani.SetBool("IsJumping2", false);
m_jumpCount = 0;
}
break;
case "Border":
{
// 游戏结束
GameMgr.instance.state = GameState.End;
}
break;
}
- 死亡后回到游戏结束的界面
public class GameOverPanel : MonoBehaviour
{
public Button restartBtn;
void Start()
{
restartBtn.onClick.AddListener(() =>
{
GameMgr.instance.state = GameState.Playing;
SceneManager.LoadScene("FifGame");
});
}
}