我有一个预制件,我想要移动到场景中的不同位置,例如,在确定的时间内移动到:北,南,东和西,直到玩家发生碰撞。
我该怎么做?
我正在尝试这个
//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;
}
}
答案 0 :(得分:0)
您需要先实例化预制件,然后再移动它。最简单的方法是通过拖放将预制件加载到编辑器中的公共变量中。
public class ObjectCreator : MonoBehaviour
{
public GameObject prefab;
void Awake()
{
Instantiate(prefab) as GameObject;
}
}
然后是Prefab中的代码:
public class PrefabCode : MonoBehaviour
{
public GameObject prefab;
void Awake()
{
transform.position = new Vector2(0, 0);
}
}
然后只需使用transform
移动实例化对象。
你说你的精灵没有移动。但是,它确实会移动,但是由于您定义移动的方式,它会以微小的小数量移动。
更改:0.1f * Time.deltaTime
收件人:2f * Time.deltaTime
你的物体移动了。从你的帖子我真的不知道它是否意味着那样或更长的路径。如果你想要更长的路径,那么你需要定义北,南,西和东的坐标。