萌熊跑酷项目-跑道轮换
roadNow roadNext 两个变量指向两个跑道进行轮换
白色为碰撞体(roadNow的) 当角色碰撞到,进行跑道轮换,轮换代码
RoadChange
1、跑道父物体
2、初始化两个跑道。通过对象池生成
3、碰撞检测,进行跑道轮换(回收跑道(roadNow),生成新跑道(完成roadNoew与roadNext赋值转换))
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RoadChange : MonoBehaviour {
GameObject roadNow;
GameObject roadNext;
GameObject parent;
void Start () {
//跑道父物体
if (parent==null)
{
parent = new GameObject();
parent.transform.position = Vector3.zero;
parent.name = "Road";
}
//先生成两个跑道
roadNow= Game.Instance.objectPool.Spawn("Pattern_1", parent.transform);
roadNext = Game.Instance.objectPool.Spawn("Pattern_2", parent.transform);
roadNext.transform.position += new Vector3(0,0,160);
}
void Update () {
}
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag==Tags.road)
{
//回收
Game.Instance.objectPool.UnSpawn(other.gameObject);
//创建新跑道
SpawnNewRoad();
}
}
//生成新的跑道
void SpawnNewRoad() {
int i = Random.Range(1,5);
//生成新的游戏对象
roadNow = roadNext;
roadNext = Game.Instance.objectPool.Spawn("Pattern_"+i.ToString(),parent.transform);
roadNext.transform.position = roadNow.transform.position + new Vector3(0,0,160);
}
}
PlayerMove
角色向前跑
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerMove : View
{
public float speed = 20;
CharacterController m_cc;
public override string Name{get{return Consts.V_PlayerMove;}}
private void Awake()
{
m_cc = GetComponent<CharacterController>();
}
private void Update()
{
m_cc.Move(transform.forward*speed*Time.deltaTime);
}
public override void HandleEvent(string name, object data)
{
}
}