将预制件移动到不同的位置
本文关键字:位置 移动 | 更新日期: 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"东"的坐标。