将预制件移动到不同的位置

本文关键字:位置 移动 | 更新日期: 2023-09-27 18:27:47

我有一个预制件,我想在场景中移动到不同的位置,例如,在确定的时间内移动到:北、南、东和西,直到玩家碰撞。

我该怎么做?

我正在试用这个

//time prefab
private float timeChange = 0f;
private float timeChangeDelay = 1f;
// Update is called once per frame
void Update ()
{
     changePrefabPosition();
}
private void changePrefabPosition()
{        
     timeChange += Time.deltaTime;        
     // north = 1, south = -1, east = 1, west = -1
     int[] northSouth = {1, -1};
     int[] westEast = {-1, 1};
     if(timeChange >= timeChangeDelay)
     {
          int index = Random.Range(0, northSouth.Length);   
          transform.position = Vector2.Lerp(transform.position, 
                               new Vector2(westEast[index],
                               northSouth[index]), 0.1f * Time.deltaTime);
          timeChange = 0;
     }
}

将预制件移动到不同的位置

您需要实例化预制件才能移动它。最简单的方法是通过拖放将预制件加载到编辑器中的公共变量中。

public class ObjectCreator : MonoBehaviour
{
    public GameObject prefab;
    void Awake()
    {
        Instantiate(prefab) as GameObject;
    }
} 

然后是序言中的代码:

public class PrefabCode : MonoBehaviour
{
    public GameObject prefab;
    void Awake()
    {
        transform.position = new Vector2(0, 0);
    }
} 

然后只需使用transform来移动实例化的对象。


你说你的雪碧不动。然而,它确实会移动,但由于您定义移动的方式,移动的小数位数很小。

更改:0.1f * Time.deltaTime

收件人:2f * Time.deltaTime

您的对象移动。从你的帖子来看,我真的不知道是应该这样,还是应该走更长的路。如果想要较长的路径,则需要定义"北"、"南"、"西"answers"东"的坐标。