Unity中如何获取立方体掉落瞬间的z轴float值,用于重启界面得分统计
实现方案
核心逻辑:你需要在立方体 第一次 超出边界的瞬间记录z轴数值,之后不管物体怎么移动都用这个已存储的数值作为得分计算依据,不要实时读取立方体位置。
具体实现步骤
- 首先给立方体挂载自定义控制脚本,可命名为
CubeController - 脚本内声明三个变量:
float类型的fallZValue用来存储掉落瞬间的z轴值,bool类型的hasFallen用来标记是否已经掉出过边界(避免重复赋值),public float boundaryZ用来设置你的游戏边界z轴阈值,根据实际场景调整数值即可 - 在
Update()方法中加入如下判断逻辑:
void Update() { // 仅在未触发掉落时做边界检测 if (!hasFallen) { if (transform.position.z < boundaryZ) { // 第一次触发边界条件的瞬间记录当前z轴数值 fallZValue = transform.position.z; hasFallen = true; // 需要同步到得分管理模块的话,在这里调用对应传值方法即可 ScoreManager.Instance.UpdateFinalScore(fallZValue); } } }
- 后续重启界面调取得分数据时,直接从全局得分管理类中取预存的
fallZValue即可,完全不受立方体掉落后续移动的影响
拓展说明
- 如果你的边界判定用的是碰撞体/触发器,把上述判断逻辑放到
OnTriggerEnter或者OnCollisionEnter方法中即可,触发瞬间取位置值的逻辑完全一致 - 要是边界判定是其他轴向,把判断条件里的z轴替换为对应轴向即可
内容的提问来源于stack exchange,提问作者Jiggo
相关产品推荐
相关产品推荐

