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/06/29 22:51:27
![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](/uploads/image/z/9747344-56-4.jpg?t=unity3d%E8%AE%A9%E7%89%A9%E4%BD%93%E7%A7%BB%E5%8A%A8%E5%9B%BA%E5%AE%9A%E8%B7%9D%E7%A6%BBvoid+Update%28%29%7Bif+%28Input.GetKeyDown%28KeyCode.UpArrow%29%29%7BVector3+endpos%3Dnew+Vector3%28person.transform.position.x%2Cperson.transform.position.y%2B10%2C0%29%3B%5Cx09+person.transform.position+%3D+Vector3.Lerp%28person.transform.position%2Cen)
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;
}
}
}