c# - 运动统一脚本无法正常工作
问题描述
我制作了一个脚本来移动角色。脚本计算鼠标点击并将带有动画的角色转移到这个地方。问题是为了让角色移动到点击的地方,需要点击这个地方2次(正好2次)。我不知道这可能与什么有关
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MOV_JANPU_SAN : MonoBehaviour
{
private Animator Anim;
private Vector3 mousePos;
private float distance;
private bool ready;
private bool permission = true;
void Start() {
Anim = GetComponent<Animator>();
}
void Update() {
distance = Vector3.Distance(transform.position, mousePos);
if(permission) {
if(Input.GetMouseButtonDown(0)) {
mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
Anim.SetBool("START", true);
Anim.SetBool("END", false);
}
}
switch(distance) {
case 10f:
Anim.SetBool("END", true);
Anim.SetBool("START", false);
ready = false;
permission = true;
break;
default:
if(ready) {
transform.position = Vector2.MoveTowards(transform.position, mousePos, Time.fixedDeltaTime * 9);
permission = false;
}
break;
}
}
void StartMove() {
ready = true; //Event ("START" end animation)
}
}
解决方案
我很确定你计算距离的那一刻是在错误的地方,发生的是你在更新步骤开始时计算距离,但是你的鼠标位置仍然和你点击之前一样,所以你的距离仍然是10 立即导致您的 switch 的第一种情况,它停止移动和动画,您应该将距离计算放在 if(permission) 语句之后和 switch 语句之前。
推荐阅读
- google-cloud-firestore - Firestore 问题 Saveall 方法
- python-3.x - 如何在数据框中查询复合词?
- excel - Excel VBA:图片的神秘移位
- javascript - Firebase .httpsCallable 函数总是返回“超出最大调用堆栈大小”
- c++ - C ++从原始数组构造向量而无需复制
- arrays - 使用 Google Apps 脚本对数组进行 POST 时出现问题
- powershell - 使用 Powershell 删除相似的文本行
- c# - 如何在 C# 中使用 Mongo 的 Aggregate 框架在列表字段中累积项目?
- c# - C# DataGridView 添加数据不适用于特殊字符列标题
- rust - Rust - shared_memory crate 返回 MapOpenFailed(2) - 怎么办