一、角色出生与基本控制移动
1)角色出生
读取地图集合中的数据,指定主角模型的出生点和旋转状态。
2)地图显示数据模型
3)角色基本移动
使用A和D键进行按键控制,读取地图中的位置信息,进行角色移动效果模拟。
二、蜗牛痕迹与移动边界控制
1)蜗牛痕迹
2)边界控制
三、地图连续生成算法
private void CalcPosition()
{
if (m_MapManager.mapList.Count - z <= 5)
{
Debug.Log("生成新地图");
float offsetz = m_MapManager.mapList[m_MapManager.mapList.Count - 1][0].GetComponent<Transform>().position.z + m_MapManager.bottomLength/2;
m_MapManager.CreateMapItem(offsetz);
}
}
四、摄像机跟随
差值运算函数,让摄像机平滑移动
Vector3.Lerp(Vector3 from, Vector3 to ,float t);
/// <summary>
/// 摄像机跟随
/// </summary>
public class CameraFollow : MonoBehaviour {
private Transform m_Transform;
private Transform m_player;
public bool startFollow = false;
void Start () {
m_Transform = gameObject.GetComponent<Transform>();
m_player = GameObject.Find("cube_books").GetComponent <Transform>();
}
void Update () {
CameraMove();
}
/// <summary>
/// 摄像机移动
/// </summary>
void CameraMove()
{
if (startFollow)
{
//开始跟随...
Vector3 nextPos = new Vector3(m_Transform.position.x, m_player.position.y + 1.483f, m_player.position.z);
//m_Transform.position = nextPos;
m_Transform.position = Vector3.Lerp(m_Transform.position, nextPos, Time.deltaTime);//插值运算函数
}
}
}
五、地面塌陷
1)摄像机按下M后自动跟随
2)地面塌陷
①要让地面一排一排的掉落:使用协程固定时间间隔,实现地面塌陷
②掉落的地面元素要销毁:定时销毁游戏物体
③给掉落的地面元素添加旋转力:rigidbody.angularVelocity:角速度向量。
④停止地面塌陷(游戏结束):当塌陷到的位置和角色的位置重合,即停止塌陷。
/// <summary>
/// 开启地面塌陷效果
/// </summary>
public void StartTileDown()
{
StartCoroutine("TileDown");
}
/// <summary>
/// 停止地面塌陷效果
/// </summary>
public void StopTileDown()
{
StopCoroutine("TileDown");
}
/// <summary>
/// 地面塌陷
/// </summary>
/// <returns></returns>
private IEnumerator TileDown()
{
while (true)
{
yield return new WaitForSeconds(0.5f);
for (int i = 0; i < mapList[index].Length; i++ )
{
Rigidbody rb = mapList[index][i].AddComponent<Rigidbody>();
rb.angularVelocity = new Vector3(Random.Range(0.0f, 1.0f), Random.Range(0.0f, 1.0f), Random.Range(0.0f, 1.0f)) * Random.Range(1, 10);
GameObject.Destroy(mapList[index][i], 1.0f);
}
if (m_PlayerController.z == index)
{
StopTileDown();
}
index++;
}
}
六、路障生成
七、使用协程生成路障移动动画
1)路障优化:浅色瓷砖也出现路障
2)路障动画
/// <summary>
/// 地面陷阱
/// </summary>
public class Spikes : MonoBehaviour {
private Transform m_Transform;
private Transform son_Transform;
private Vector3 normalPos;
private Vector3 targetPos;
void Start () {
m_Transform = gameObject.GetComponent<Transform>();
son_Transform = m_Transform.FindChild("moving_spikes_b").GetComponent<Transform>();
normalPos = son_Transform.position;
targetPos = son_Transform.position + new Vector3(0, 0.15f, 0);
StartCoroutine("UpAndDown");
}
private IEnumerator UpAndDown()
{
while (true)
{
StopCoroutine("Down");
StartCoroutine("Up");
yield return new WaitForSeconds(2.0f);
StopCoroutine("Up");
StartCoroutine("Down");
yield return new WaitForSeconds(2.0f);
}
}
private IEnumerator Up()
{
while (true)
{
son_Transform.position = Vector3.Lerp(son_Transform.position, targetPos, Time.deltaTime * 30);
yield return null;
}
}
private IEnumerator Down()
{
while (true)
{
son_Transform.position = Vector3.Lerp(son_Transform.position, normalPos, Time.deltaTime * 30 );
yield return null;
}
}
}
八、角色与路障交互死亡判断
1)路障蜗牛痕迹
当路障处于安全状态时,角色移动到路障上形成蜗牛痕迹
①创建三个tag标签,分别设置给路障和瓷砖模型;
②根据tag判断出“位置类型”,然后查找响应的地面模型进行蜗牛痕迹生成。
2)死亡判断
何时死亡?
①被地面路障刺到;(触发判断)
②被天空路障刺到;(触发判断)
③掉入坑洞陷阱;(刚体下落)
④自己所在位置地面塌陷。(刚体下落)
添加触发器 地面空陷阱时掉落
网友评论