unity3d让物体移动固定距离void Update(){if (Input.GetKeyDown(KeyCode.UpArrow)){Vector3 endpos=new Vector3(person.transform.position.x,person.transform.position.y+10,0);\x09 person.transform.position = Vector3.Lerp(person.transform.position,en

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/09 10:22:08

unity3d让物体移动固定距离void Update(){if (Input.GetKeyDown(KeyCode.UpArrow)){Vector3 endpos=new Vector3(person.transform.position.x,person.transform.position.y+10,0);\x09 person.transform.position = Vector3.Lerp(person.transform.position,en
unity3d让物体移动固定距离
void Update(){
if (Input.GetKeyDown(KeyCode.UpArrow)){
Vector3 endpos=new Vector3(person.transform.position.x,person.transform.position.y+10,0);\x09 person.transform.position = Vector3.Lerp(person.transform.position,endpos,Time.deltaTime *2);}
}
我想实现按一下键盘,让物体y轴移动+10,但是这样写完总是快速键盘按完没有移动到终点就停在半路了,去掉Input.GetKeyDown的话发现这样会使物体一直移动,因为要取物体当前位置然后y+10,所以会一直移动怎样才能让他只移动10个坐标后停止呢?

unity3d让物体移动固定距离void Update(){if (Input.GetKeyDown(KeyCode.UpArrow)){Vector3 endpos=new Vector3(person.transform.position.x,person.transform.position.y+10,0);\x09 person.transform.position = Vector3.Lerp(person.transform.position,en
稍微修改了下,看看是不是你想要的结果.
注意Input.GetKeyDown(KeyCode.UpArrow) 这个返回值只在按下的那一帧为true.
还有就是Vector3.Lerp()这个函数的第三个参数的有效范围是0~1,不多说了,你懂得.
private bool sMove = false;
private Vector3 endpos;
private float process = 0;
void Update()
{
if (Input.GetKeyDown(KeyCode.UpArrow))
{
if (!sMove)
{
endpos = new Vector3(person.transform.position.x,person.transform.position.y + 10,0);
process = 0;
sMove = true;
}
}
if (sMove)
{
process += Time.deltaTime * 2;
if (process < 1)
person.transform.position = Vector3.Lerp(person.transform.position,endpos,process);
else
{
sMove = false;
}
}
}