langliali 2024-02-25 09:37 采纳率: 66.7%
浏览 2
已结题

Unity角色移动问题

一个简单的Unpdata移动,为什么每次移动完,角色都会自动回到起始点?,肯定解惑.


    void Update()
    {
        //设置动画
        playerAni.SetFloat("Speed",this.speed);
        //判断移动距离,如果到目标停止,否则继续移动
        if(InteractionDistance(transform.position,targetPoint,1))
        {
            targetPoint = Vector3.zero;
            speed = 0;
        }else{
             speed = 1f;
            float length = Vector3.Distance(transform.position,targetPoint);
            transform.position = Vector3.Lerp(transform.position,targetPoint,Time.deltaTime/length);
            transform.LookAt(targetPoint);
        }
             
        //发射射线查找鼠标点击位置,
         if(Input.GetMouseButtonDown(0))
        {
            RaycastHit hit;
            if(Physics.Raycast(GetMouseRay(),out hit))
            {
                if(hit.collider.CompareTag("Ground"))
                {
                    //设置点击目标为移动目的地
                    targetPoint = hit.point;
                }            
            }   
        }
    }
  • 写回答

3条回答 默认 最新

  • GISer Liu 2024-02-25 09:38
    关注

    该回答引用自GPT-3.5,由博主GISer Liu编写:

    这个问题可能是由于在每一帧更新时都在设置目标点为Vector3.zero,导致角色每次移动到目标点后立即又被设置回原点。解决这个问题的方法是只在点击鼠标时才设置目标点,而不是在每一帧更新时都设置。
    以下是修改后的代码:
    csharpCopy code

    void Update()
    {
    //设置动画
    playerAni.SetFloat("Speed", this.speed);
    //发射射线查找鼠标点击位置,
    if (Input.GetMouseButtonDown(0))
    {
    RaycastHit hit;
    if (Physics.Raycast(GetMouseRay(), out hit))
    {
    if (hit.collider.CompareTag("Ground"))
    {
    //设置点击目标为移动目的地
    targetPoint = hit.point;
    }
    }
    }
    //判断移动距离,如果到目标停止,否则继续移动
    if (InteractionDistance(transform.position, targetPoint, 1))
    {
    speed = 0;
    }
    else
    {
    speed = 1f;
    float length = Vector3.Distance(transform.position, targetPoint);
    transform.position = Vector3.Lerp(transform.position, targetPoint, Time.deltaTime / length);
    transform.LookAt(targetPoint);
    }
    }
    

    这样修改后,角色应该只会在点击鼠标时才移动到目标点,而不会在每一帧都被设置回原点了。

    如果该回答解决了您的问题,请采纳!如果没有,请参考以下方案进行修订

    用户答题指南

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月4日
  • 已采纳回答 2月25日
  • 创建了问题 2月25日

悬赏问题

  • ¥50 RAD_XE11.3获取android11手机的IMEI码
  • ¥15 linux的gcc命令报错
  • ¥20 如何再GIS用海岸线建立缓冲区
  • ¥15 codeblock遇到问题了,求帮助😭
  • ¥15 Qt6.8.0加载网页MSVC2022
  • ¥15 360浏览器m2的这个值
  • ¥15 国内有哪些厂商做automlops的?
  • ¥15 skynet pb mysql
  • ¥15 笔记本外接显示器分辨率太低各种方法都用过了调不高
  • ¥15 Redstone R0697-F00 D2020 交换机 OS