我是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。我该怎么做?
在检查器的“ 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
您的按钮正在调用的功能应该是公开的。
public void CardMovement(){
rb.MovePosition(pos * speed * Time.deltaTime);
}
}
更改后,再次分配具有脚本的对象并尝试。
您要做的是在脚本中创建一个函数,然后将该脚本应用于游戏对象。创建完按钮后,单击添加功能按钮到按钮上,然后将游戏对象拖到打开部分。然后从您添加的列出脚本中选择该函数,并将其称为移动对象脚本或您所谓的任何对象。