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的值,但按说是个恒定的值啊?求问这个问题怎么解决?