为了账号安全,请及时绑定邮箱和手机立即绑定

Unity - 将对象移动到点

Unity - 将对象移动到点

C#
临摹微笑 2022-01-15 19:30:43
我正在使用下面的代码将球移动到确定的点。但是,球正在“传送”到那里,我怎样才能将球滚动到该点?void Update(){            if (Input.GetMouseButtonDown(0) && EventSystem.current.currentSelectedGameObject != ButtonDiminuir && EventSystem.current.currentSelectedGameObject != ButtonAumentar &&       EventSystem.current.currentSelectedGameObject != BarraForca) {                    transform.position = Vector3.Lerp(transform.position, new Vector3(transform.position.x, transform.position.y, -9.0424f), 2 * Time.deltaTime);                    Anim.Play("Kick_Up");            }}
查看完整描述

2 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

你可以这样做Vector3.Lerp:


Vector3 startPosition;

Vector3 endPosition;

var speed = 10.0;


transform.position = Vector3.Lerp(startPosition, endPosition, speed * Time.deltaTime);

或使用 Vector3.MoveTowards


// The step size is equal to speed times frame time.

float step = speed * Time.deltaTime;


// Move our position a step closer to the target.

transform.position = Vector3.MoveTowards(transform.position, target.position, step);


查看完整回答
反对 回复 2022-01-15
?
芜湖不芜

TA贡献1796条经验 获得超7个赞

如果要滚动球,请AddForce()改用transform.position.


首先,将Rigidbody和添加Sphere Collider到您的球类游戏对象。


然后试试这段代码:


public Vector3 targetPoint;

public float forceAmount;


...


void Update()

{

    Vector3 force = ((targetPoint - transform.position).normalized * forceAmount * Time.smoothDeltaTime);

    GetComponent<Rigidbody>().AddForce(force);

}

另外,如果你想球在到达目标点后立即停止,你可以设置GetComponent<Rigidbody>().velocity为 0 时targetPoint - transform.position = 0


我希望它对你有帮助。


查看完整回答
反对 回复 2022-01-15
  • 2 回答
  • 0 关注
  • 188 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信