所以,我試圖找出如何寫一個腳本,將可以在遊戲中的對象是在一定的國際地位,檢測,改造這些遊戲對象,並通過說1如何使用統一的世界位置移動GameObjects?
希望他們動起來這是有道理的,如果不是請請問,我會盡力解釋更詳細的信息。真的很感激任何幫助。
所以,我試圖找出如何寫一個腳本,將可以在遊戲中的對象是在一定的國際地位,檢測,改造這些遊戲對象,並通過說1如何使用統一的世界位置移動GameObjects?
希望他們動起來這是有道理的,如果不是請請問,我會盡力解釋更詳細的信息。真的很感激任何幫助。
void updateGameObjectsMatchingPosition(float x, float y, float z)
{
// Please try to use something more specific like GameObject.FindGameObjectWithTag("CoolTag");
var gameObjects : GameObject[] = GameObject .FindObjectsOfType(GameObject) as GameObject[];
for(var i = 0; i < gameObjects.length; i++) {
var position = gameObjects[i].transform.position;
if(position.x == x && position.y == y && position.z == z) {
//Do something with the position of this object.
gameObjects[i].transform.position = new Vector3(x + 1, y + 1, z + 1);
}
}
}
將此腳本附加到您的遊戲對象。
[SerializedField] Vector3 _designatePosition;
IEnumerator MoveUp() {
var speed = 5 * Time.deltaTime;
var targetPosition = transform.position + new Vector3(0, 1, 0);
while (Vector3.Distance(transform.position, targetPosition) > 0.01f) {
transform.position = Vector3.MoveTowards(transform.position, targetPosition, speed);
}
}
void Update() {
if (Vector3.Distance(transform.position, _designatePosition) < 0.01f) {
StartCoroutine(MoveUp());
}
}
這太寬泛了 - 通常預期您會嘗試先編寫自己的代碼,並且如果遇到無法解決的問題,只會提出Stack Overflow的問題;本網站不是爲了提供從頭開始編寫的代碼。爲了讓你開始,請查看['Transform.Translate()'](https://docs.unity3d.com/ScriptReference/Transform.Translate.html)並考慮使用觸發器collider(或['Physics.OverlapSphere() '](https://docs.unity3d.com/ScriptReference/Physics.OverlapSphere.html))來檢測進入特定區域的物體。 – Serlite