unity3d橡皮筋或弹簧效果的实现?
描述你的问题
如图的蓝色cube,我想实现按KeycodeA或D使它从起点向左或向右一段距离后再松开A或D能使它平滑加速回到起点,如同在起点有一个橡皮筋把它往回拉的效果,我用插值lerp却无法实现,求各位大神解惑。贴上相关代码
以下的我的代码:
public class PlayerMove : MonoBehaviour {
public float moveSpeed=0.5f;
public Vector3 startPos;
public float smooth=0.5f;
void Start () {
startPos =transform.position;
}
void Update () {
if (Input.GetKey(KeyCode.A)) {
transform.Translate (Vector3.left*moveSpeed*Time.deltaTime);
}
if (Input.GetKey(KeyCode.D)) {
transform.Translate (Vector3.right*moveSpeed*Time.deltaTime);
}
if (Input.GetKeyUp (KeyCode.A) || Input.GetKeyUp (KeyCode.D)) {
transform.position = Vector3.Lerp(transform.position,startPos,smooth*Time.deltaTime);
}
}
}
贴上报错信息
代码无报错信息贴上相关截图
已经尝试过哪些方法仍然没解决(附上相关链接)
用过什么mathf.SmoothDamp,传统的translate都不好使唉,快晕了
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是逻辑写错了
去掉这个if就行了。GetKeyUp只会在按键结束的时候执行一次,想运动的话要反复执行这一句才可以。
写成这样就不会在按键的时候调用lerp了,如果想要和上一种差不多的效果可以按距离减少moveSpeed。