通过单击 UI 按钮而不是多次单击,将游戏对象移动或缓慢移动到其他游戏对象的位置?

努曼汗

我的场景中有一个按钮、一个主相机和一个空的游戏对象。

每当我点击那个按钮时,我的相机应该慢慢地移到那个空的游戏对象的位置。

我的相机正停在那个位置,这很好,但问题是我必须多次点击那个按钮,直到我的相机到达它的位置。那么有没有办法通过单击该按钮将我的相机移动到游戏对象的位置?

这是我的代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TransitionCAM : MonoBehaviour {
    public Transform views;
    public float transitionSPEED;
    Transform currentVIEW;

    public void move(){
        currentVIEW = views;
        transform.position = Vector3.Lerp (transform.position, currentVIEW.position, Time.deltaTime * transitionSPEED);

        //for camera rotation
        Vector3 currentangel = new Vector3 ( Mathf.LerpAngle(transform.rotation.eulerAngles.x, currentVIEW.transform.rotation.eulerAngles.x, Time.deltaTime *transitionSPEED),
            Mathf.LerpAngle(transform.rotation.eulerAngles.y, currentVIEW.transform.rotation.eulerAngles.y, Time.deltaTime *transitionSPEED),
            Mathf.LerpAngle(transform.rotation.eulerAngles.z, currentVIEW.transform.rotation.eulerAngles.z, Time.deltaTime *transitionSPEED));

        transform.eulerAngles = currentangel;
    }
}
阿里·卡纳特

问题是你Vector3.Lerp只跑一次。试试这个:

    public Transform views;
    public float transitionSPEED;
    Transform currentVIEW;
    private bool flag = false;

    Vector3 currentangel;
    private void Start()
    {
        Debug.Log(flag);
        currentVIEW = views;

    }
    private void Update()
    {
        if (flag == true)
        {

            transform.position = Vector3.Lerp(transform.position, currentVIEW.position, Time.deltaTime * transitionSPEED);
            Debug.Log("object pos" + transform.position);
            Debug.Log(currentVIEW.position);
            //for camera rotation

            currentangel = new Vector3(Mathf.LerpAngle(transform.rotation.eulerAngles.x, currentVIEW.transform.rotation.eulerAngles.x, Time.deltaTime * transitionSPEED),
            Mathf.LerpAngle(transform.rotation.eulerAngles.y, currentVIEW.transform.rotation.eulerAngles.y, Time.deltaTime * transitionSPEED),
            Mathf.LerpAngle(transform.rotation.eulerAngles.z, currentVIEW.transform.rotation.eulerAngles.z, Time.deltaTime * transitionSPEED));

            transform.eulerAngles = currentangel;
        }
    }



    public void Move()
    {
        flag = true;
    }

当您的相机处于正确位置时,您必须想出一种方法来停止 lerping。因为if (flag == true)按下按钮后将始终为真。

这是一个更好的解决方案,我相信使用协程

public Transform views;
public float transitionSPEED;
Transform currentVIEW;
private bool flag = false;
private bool isStarted = false;
Vector3 currentangel;
private void Start()
{
    Debug.Log(flag);
    currentVIEW = views;

}
private void Update()
{
    if (flag  && !isStarted)
    {
        StartCoroutine(CoroutineSolution());
        isStarted = true;
    }
}
IEnumerator CoroutineSolution()
{
    float t = 0.0f;
    while ( t<1.0f )
    {

        t += Time.deltaTime;
        transform.position = Vector3.Lerp(transform.position, currentVIEW.position, t);

        //for camera rotation

        currentangel = new Vector3(Mathf.LerpAngle(transform.rotation.eulerAngles.x, currentVIEW.transform.rotation.eulerAngles.x, t),
        Mathf.LerpAngle(transform.rotation.eulerAngles.y, currentVIEW.transform.rotation.eulerAngles.y, t),
        Mathf.LerpAngle(transform.rotation.eulerAngles.z, currentVIEW.transform.rotation.eulerAngles.z, t));

        transform.eulerAngles = currentangel;
        Debug.Log("Coroutine running");

        yield return null;

    }

}


public void Move()
{
    flag = true;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用UI按钮移动游戏对象

来自分类Dev

使用UI Sortable,当我单击按钮时,是否可以根据给定的值将项目移动到新位置?

来自分类Dev

Android:通过ID查找视图而无需单击UI按钮

来自分类Dev

如何通过单击按钮伪造对Material-ui TextField的关注?

来自分类Dev

通过 VBA 设置表格 AutoFit 与单击 UI 按钮的结果不同

来自分类Dev

如何通过单击按钮使用路径几何移动对象?

来自分类Dev

通过单击

来自分类Dev

如何获取游戏对象-触发了UI.Button单击功能

来自分类Dev

如何通过单击 HTML 按钮将数据从一个 DynamoDB 表移动到同一区域中的其他 DynamoDB 表

来自分类Dev

如何通过单击使UIView移动?

来自分类Dev

tkinter:通过单击移动图像

来自分类Dev

Kendo UI 网格 - 通过单击按钮在发布请求后重新加载剑道数据源

来自分类Dev

jQuery UI 日期选择器 - 通过单击另一个按钮更改范围

来自分类Dev

通过单击按钮显示元素,并通过单击其他任何位置隐藏

来自分类Dev

单击它时缓慢旋转游戏对象

来自分类Dev

单击重叠的UI元素

来自分类Dev

单击重叠的UI元素

来自分类Dev

Unity获取游戏对象移动目标的Canvas UI文本位置

来自分类Dev

Kendo UI按钮-单击事件

来自分类Dev

单击事件UI按钮jQuery

来自分类Dev

Kendo UI按钮-单击事件

来自分类Dev

单击事件UI按钮jQuery

来自分类Dev

通过单击并拖动角落来调整材料ui卡组件的大小

来自分类Dev

如何通过单击botton使用Jquery UI打开确认对话框窗口

来自分类Dev

UI事件(单击,鼠标按下等)是否通过JavaScript中的事件循环进行

来自分类Dev

如何通过单击 element-ui 表中的 shift 键来选择批处理行?

来自分类Dev

如何从单击的位置创建移动对象

来自分类Dev

Unity 通过 C# 移动 UI 按钮

来自分类Dev

通过单击传单标记

Related 相关文章

  1. 1

    使用UI按钮移动游戏对象

  2. 2

    使用UI Sortable,当我单击按钮时,是否可以根据给定的值将项目移动到新位置?

  3. 3

    Android:通过ID查找视图而无需单击UI按钮

  4. 4

    如何通过单击按钮伪造对Material-ui TextField的关注?

  5. 5

    通过 VBA 设置表格 AutoFit 与单击 UI 按钮的结果不同

  6. 6

    如何通过单击按钮使用路径几何移动对象?

  7. 7

    通过单击

  8. 8

    如何获取游戏对象-触发了UI.Button单击功能

  9. 9

    如何通过单击 HTML 按钮将数据从一个 DynamoDB 表移动到同一区域中的其他 DynamoDB 表

  10. 10

    如何通过单击使UIView移动?

  11. 11

    tkinter:通过单击移动图像

  12. 12

    Kendo UI 网格 - 通过单击按钮在发布请求后重新加载剑道数据源

  13. 13

    jQuery UI 日期选择器 - 通过单击另一个按钮更改范围

  14. 14

    通过单击按钮显示元素,并通过单击其他任何位置隐藏

  15. 15

    单击它时缓慢旋转游戏对象

  16. 16

    单击重叠的UI元素

  17. 17

    单击重叠的UI元素

  18. 18

    Unity获取游戏对象移动目标的Canvas UI文本位置

  19. 19

    Kendo UI按钮-单击事件

  20. 20

    单击事件UI按钮jQuery

  21. 21

    Kendo UI按钮-单击事件

  22. 22

    单击事件UI按钮jQuery

  23. 23

    通过单击并拖动角落来调整材料ui卡组件的大小

  24. 24

    如何通过单击botton使用Jquery UI打开确认对话框窗口

  25. 25

    UI事件(单击,鼠标按下等)是否通过JavaScript中的事件循环进行

  26. 26

    如何通过单击 element-ui 表中的 shift 键来选择批处理行?

  27. 27

    如何从单击的位置创建移动对象

  28. 28

    Unity 通过 C# 移动 UI 按钮

  29. 29

    通过单击传单标记

热门标签

归档