首页 > 解决方案 > 运动统一脚本无法正常工作

问题描述

我制作了一个脚本来移动角色。脚本计算鼠标点击并将带有动画的角色转移到这个地方。问题是为了让角色移动到点击的地方,需要点击这个地方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)
  }
}

标签: c#unity3d

解决方案


我很确定你计算距离的那一刻是在错误的地方,发生的是你在更新步骤开始时计算距离,但是你的鼠标位置仍然和你点击之前一样,所以你的距离仍然是10 立即导致您的 switch 的第一种情况,它停止移动和动画,您应该将距离计算放在 if(permission) 语句之后和 switch 语句之前。


推荐阅读