c# - Vector3.Slerp() 没有完成它必须做的事情就停止了
问题描述
所以我想让玩家去某个地方,但我不希望它看起来像是在传送,所以我使用了 Vector3.Slerp 但问题是它不会瞄准它中途停止。
这是代码:
void Update()
{
if (Input.GetKeyDown("space"))
{
StartCoroutine(GoToTargetPos());
}
} IEnumerator GoToTargetPos()
{
Vector3 targetPos = transform.position + offset;
transform.position = Vector3.Slerp(transform.position, targetPos, Time.deltaTime * speed);
yield return new WaitForSeconds(0.75f);
isDone = true;
}
对不起,如果我的英语不好。
解决方案
快速回答,只是为了证明它有效......
IEnumerator GoToTargetPos()
{
Vector3 targetPos = transform.position + offset;
float timeElapsed = 0.0f;
float timeToMove = 0.75f; // Using this since that is how you are waiting...
while(timeElapsed < timeToMove)
{
timeElapsed += Time.deltaTime;
float ratio = Mathf.Clamp01(timeElapsed / timeToMove);
transform.position = Vector3.Slerp(transform.position, targetPos, ratio);
yield return null; // Return to this at the beginning of the next frame
}
isDone = true;
}
推荐阅读
- redis - Kubernetes 中的 Redis 哨兵设置
- ios - 使用 diffable 数据源时如何处理空状态 - UICollectionViewDiffableDataSource?
- python - 在 colab 中跨细胞坚持 conda env
- c++ - 为什么不能读取文件(不显示数据)?
- python - 有没有办法在 PyTorch DataParallel 中处理与 batch_index 相关的数据
- python - 如何只打印 JSON 对象的一部分数据?
- c - osDelay() 等待时间不够
- google-apps-script - 带有 Bearer 令牌的 Google App 脚本 UrlFetchApp 但收到错误请求
- python - 如何根据具有外键关系的另一个模型更新 Django 模型的字段
- nlp - 为什么 Amazon Comprehend Medical 在一个文本简介中识别出药物实体,而在另一个文本简介中识别不出来?