wiflower 2023-11-19 17:59 采纳率: 50%
浏览 5
已结题

unity的UI插件改变运动效果

unity中添加button等UI插件后改变了原有的运动效果,求问是什么原因,以及如何修改

原本代码: speed0 = 0.45f Mathf.Sin(Time.time);
想要将0.45f改成文本输入数据来改变速度,因此修改代码如下:
speed0 = float.Parse(input.text) Mathf.Sin(Time.time);
整个程序只修改了这一行代码,但是运行出来效果不同,第一个可以实现弹簧压缩后再回弹到原本长度,但是第二个在文本框同样输入0.45则变成了先拉伸在压缩。
然后又添加了两个button来控制启停和复位,然后就发现运动更乱了,整体代码如下

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

public class 效果展示 : MonoBehaviour
{
    public Transform[] tfs;
    public float speed0;//弹簧运动速度

    private Vector3 initialScale; // 弹簧最初的形态
    private float initialY; // 活塞最初的Y坐标

    public float pressure;//压力
    public InputField input;

    public bool a = false;
    // Start is called before the first frame update
    void Start()
    {
        initialScale = tfs[0].localScale;//记录弹簧初始大小
        initialY = tfs[1].position.y;//记录活塞初始位置
        
    }

    // Update is called once per frame
    void Update()
    {
        //pressure = float.Parse(input.text);

        if (a)
        {
                Move();
        }
    }

    public void qidong() //按钮控制启停
    {
        a = !a;
        
    }

    public void fuwei()//按钮控制复位
    {
        tfs[0].localScale = initialScale;
        tfs[1].position = new Vector3(tfs[1].position.x, initialY, tfs[1].position.z);
    }

    private void Move()
    {
        // 弹簧压缩扩张 
        speed0 = float.Parse(input.text) * Mathf.Sin(Time.time);
        tfs[0].localScale -= Vector3.up * speed0 * Time.deltaTime;

        // 根据弹簧的缩放度计算活塞的位置
        float percent = tfs[0].localScale.y / initialScale.y;
        tfs[1].position = new Vector3(tfs[1].position.x, initialY * percent, tfs[1].position.z);
    }
}

然而每次点击暂停后似乎更新了Start中的两个initial的值,但按说是个恒定的值啊?求问这个问题怎么解决?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 11月27日
    • 创建了问题 11月19日

    悬赏问题

    • ¥15 数据库原理及应用上机练习题
    • ¥30 征集Python提取PDF文字属性的代码
    • ¥15 如何联系真正的开发者而非公司
    • ¥15 有偿求苍穹外卖环境配置
    • ¥15 代码在keil5里变成了这样怎么办啊,文件图像也变了,
    • ¥20 Ue4.26打包win64bit报错,如何解决?(语言-c++)
    • ¥15 clousx6整点报时指令怎么写
    • ¥30 远程帮我安装软件及库文件
    • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
    • ¥20 深信服vpn-2050这台设备如何配置才能成功联网?