如何在Unity中使用按钮将对象移动到特定位置?

问题描述 投票:0回答:3

我是Unity新手,目前正在使用Unity2D。我想做的是,当按下按钮时,一个对象将移动并移至特定位置。目前我正在使用:

public class MoveCard : MonoBehaviour
{
    public float speed = 20f;
    public Rigidbody2D rb;
    public Vector2 pos = new Vector2(5,1);

    void Update(){

    }

void CardMovement(){
    rb.MovePosition(pos * speed * Time.deltaTime);
    }
}

我希望在按下按钮时启动CardMovement功能,但该功能未显示在Button Inspector中,并且我不知道如何在按钮中引用Rigidbody2D。我该怎么做?

object unity3d button
3个回答
1
投票

在检查器的“ OnClickEvent”按钮菜单中,单击加号按钮,放入包含“ MoveCard”组件的对象。在右侧的下拉框中找到方法'CardMovement'。您只需在当前代码中设置一个便笺,便可以设置它,因此,如果您按下按钮,它将仅移动一帧。您可以更改为以下内容:

public class MoveCard : MonoBehaviour
{
    public float speed = 20f;
    public Rigidbody2D rb;
    public Vector2 pos = new Vector2(5,1);
    public bool moving = false;

    void Update(){
    if (moving) {
    rb.MovePosition(pos * speed * Time.deltaTime);
    }
    }

void CardMovement(){
    moving = true;
    }
}

编辑(仍然不错):

//..
void FixedUpdate()
{
    if (moving) {
    rb.MovePosition(pos * Time.fixedDeltaTime);
    }
}
//..

编辑编辑:在刚体上将isKinematic设置为true


0
投票

您的按钮正在调用的功能应该是公开的。

public void CardMovement(){
rb.MovePosition(pos * speed * Time.deltaTime);
}

}

更改后,再次分配具有脚本的对象并尝试。


0
投票

您要做的是在脚本中创建一个函数,然后将该脚本应用于游戏对象。创建完按钮后,单击添加功能按钮到按钮上,然后将游戏对象拖到打开部分。然后从您添加的列出脚本中选择该函数,并将其称为移动对象脚本或您所谓的任何对象。

© www.soinside.com 2019 - 2024. All rights reserved.