2015-12-27 7 views
1

Я просто пытаюсь уничтожить квадратный объект и создать новый экземпляр в его месте. Теперь происходит то, что первый объект будет уничтожен, и появится новый. Но он всегда будет отображаться в середине экрана, а не в его родительском преобразовании, в котором содержится скрипт. Я попытался установить векторы, используя код, чтобы установить родительский элемент и несколько других вещей, но ничего не работает. Вот, и спасибо заранее!Создавать объект в определенном месте?

public Transform RaisingBlock; 
public GameObject lava1; 
public GameObject raisedBlock1; 
public GameObject loweredBlock1; 

void Start() 
{ 
    StartCoroutine("MyEvent"); 
} 

private IEnumerator MyEvent() 
{ 
    while(true) 
    { 
     yield return new WaitForSeconds(2f); 
     Destroy(this.gameObject); 
     Instantiate(lava1); 
    } 
} 
+0

Знаете ли вы, на каком языке вы здесь используете? Пожалуйста, отметьте соответствующим образом. – usr2564301

+0

Это похоже на ваш ответ: http://gamedev.stackexchange.com/questions/97370/how-do-instantiate-a-prefab-to-a-specific-coordinate –

+0

Похож на C# для меня. Где экземпляр this.gameObject? Я полагаю, что это происходит потому, что this.gameObject либо неинформирован, либо позже дал определенные значения для его свойств. Когда вы уничтожаете этот объект, очевидно, что он теперь ушел. Но вы создаете новый объект с новыми значениями (возможно, по умолчанию, даже системным значением по умолчанию, значениями). Вам нужно создать экземпляр нового объекта с точными значениями, которые ранее разрушенный объект имел при уничтожении. Вы можете рассмотреть любой из шаблонов клонирования, чтобы выполнить это. – ouflak

ответ

1

Когда вы уничтожаете объект gameObject, он удаляется с активного экрана. Таким образом, его местоположение также будет потеряно. Но проблема в том, что вы должны указать местоположение, когда вы создаете экземпляр объекта lava1. Рассмотрите возможность использования одного из перегруженных Instantiate для достижения этой цели:

Instantiate(lava1, this.gameObject.transform.position, 
      this.gameObject.transform.rotation); 

Кроме того, ваши сопрограммный останавливается, потому что ваш сценарий разрушается вместе с геймобжектами.

+0

Нет, я пробовал все решения, и все они делают то же самое, объект удаляется, а затем lava1 получает экземпляр в середине экрана, несмотря ни на что. Я пробовал: Vector3 position = new Vector3 (5, 5, 5); GameObject newGameObject = Instantiate (GameObjectToInstantiate); новыйGameObject.transform.position = position; И Мгновью (lava1, this.gameObject.transform.position, this.gameObject.transform.rotation); –

+0

И GameObject myRoadInstance = Instantiate (Resources.Load ("road"), new Vector3 (5, 5, 5), Quaternion.identity) как GameObject; Но все они делают то же самое, объект снова появляется в середине игрового мира каждый раз. –

+0

У вашей игры lava gameObject есть анимация или какой-либо другой подобный компонент? анимации, если они не являются родителями для другого родительского игрового объекта, могут сбросить позицию и переместить строку Destroy (this.gameObject) после вызова метода создания экземпляра –