10.平台数据类
10.1 知识点
要点分析
创建平台类脚本,这个脚本会挂载到场景的某一对象上。
平台类定义一些变量。有些平台可以按下时下平台,所以有canFall配置。
//平台的宽
public float width = 5;
//平台是否显示影子
public bool canShowShadow = true;
//平台是否可以下落
public bool canFall = true;
//我们平台对应的Y坐标
public float Y => this.transform.position.y;
//平台的左边界
public float Left => this.transform.position.x - width / 2;
//平台的右边界
public float Right => this.transform.position.x + width / 2;
在OnDrawGizmos绘制平台使用Gizmos.DrawLine绘制平台
private void OnDrawGizmos()
{
Gizmos.color = Color.red;
Gizmos.DrawLine(this.transform.position - Vector3.right * width / 2, this.transform.position + Vector3.right * width / 2);
}
给外部提供一个判断玩家能否跳到当前平台上的函数
/// <summary>
/// 检测玩家是否可以落在我之上
/// </summary>
/// <param name="pos"></param>
/// <returns></returns>
public bool CheckObjFallOnMe(Vector3 pos)
{
//对象的Y在我之上 并且在我的左右边界之内 就认为可以落在我身上
if (pos.y >= Y && pos.x <= Right && pos.x >= Left)
return true;
return false;
}
10.2 知识点代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 平台数据类
/// </summary>
public class Platform : MonoBehaviour
{
//平台的宽
public float width = 5;
//平台是否显示影子
public bool canShowShadow = true;
//平台是否可以下落
public bool canFall = true;
//我们平台对应的Y坐标
public float Y => this.transform.position.y;
//平台的左边界
public float Left => this.transform.position.x - width / 2;
//平台的右边界
public float Right => this.transform.position.x + width / 2;
/// <summary>
/// 检测玩家是否可以落在我之上
/// </summary>
/// <param name="pos"></param>
/// <returns></returns>
public bool CheckObjFallOnMe(Vector3 pos)
{
//对象的Y在我之上 并且在我的左右边界之内 就认为可以落在我身上
if (pos.y >= Y && pos.x <= Right && pos.x >= Left)
return true;
return false;
}
private void OnDrawGizmos()
{
Gizmos.color = Color.red;
Gizmos.DrawLine(this.transform.position - Vector3.right * width / 2, this.transform.position + Vector3.right * width / 2);
}
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com