c# - 为什么靠近箱子时箱子会不停地打开/关闭?
问题描述
我希望当玩家靠近板条箱时它会打开一次,然后当玩家离开它超过 1.5f 距离时关闭板条箱一次,如果再次靠近则打开一次。
但是当玩家现在靠近它时,它会非常快地打开/关闭,不会停止。如果玩家离它很远,它会关闭一次,但问题是靠近它时。
脚本,也许我为打开和关闭所做的逻辑有问题?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class UnlockCrate : MonoBehaviour
{
public GameObject carte;
public Animation anim;
private bool playAnimOnce = false;
private void Update()
{
var distance = Vector3.Distance(carte.transform.position, transform.position);
if(distance < 1.5f && playAnimOnce == false)
{
anim.Play("Crate_Open");
playAnimOnce = true;
}
else
{
if(playAnimOnce == true)
{
anim.Play("Crate_Close");
playAnimOnce = false;
}
}
}
}
解决方案
代码看起来像这样(奇怪地命名为“crate is open”变量除外):
- 如果玩家小于(1.5 个单位)并且箱子未打开
- 打开箱子
- 除此以外
- 如果箱子打开
- 关闭板条箱
- 如果箱子打开
因此,它会在您接近时打开,然后在下一次通过此代码时将其关闭,无论您身在何处,即使在“打开”范围内也是如此。
试试这个:
if (distance < 1.5f)
{
if (!playAnimOnce)
{
anim.Play("Crate_Open");
playAnimOnce = true;
}
}
else if (playAnimOnce)
{
anim.Play("Crate_Close");
playAnimOnce = false;
}
现在它只会在你在范围内并且它关闭时打开箱子,并且只有在你超出范围时才会关闭它。
推荐阅读
- cplex - 如何处理 cplex 中的 numBest(求解器状态)
- apache-kafka - kafka 从组中删除连接
- r - dplyr 使用字符串选择列并应用基本函数
- azure-devops - 如何将 DevOps 工件移动到 Jfrog 工件
- r - 将文件夹和子文件夹拆分为R中的数据框
- c# - 在 [] 之间的某个位置获取字符串中的文本
- python - Django 编辑用户配置文件模型
- c++ - 使 std::cout 不会因 O_NONBLOCK 失败或使 stdin O_NONBLOCK 保持标准输出阻塞?
- image-processing - Pytorch 创建带有增强图像的数据集
- cmake - 使用 ninja clean 删除所有生成的文件