簡體   English   中英

Unity移動實例化對象

[英]Unity Moving Instantiated Objects

下面的代碼可以正常運行,除了實例化對象自己移動。 我希望我的實例化對象以0.5f的速度在pointA和pointB之間向后移動第四。

注意:我不嘗試在Start()和Update()中使用注釋的代碼,因為此文件已附加到相機。

使用當前代碼:我的objectList對象按預期方式移動,而不是它們的實例化對象。 我希望實例化的對象像乒乓球一樣移動,並保持偏移

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ObjectsSpawner : MonoBehaviour {

public GameObject[] objectList;
public  GameObject[] objectSpawns;
int val;

public float speed = 0.5f;
Vector3 pointA;
Vector3 pointB;

// Use this for initialization
void Start () {
    val = PlayerPrefs.GetInt("CannonPowerVal");
    addToList();
    for (int i = 1; i < objectSpawns.Length; i++){
        pointA = new Vector3(-3.8f, objectSpawns[i].transform.localPosition.y, 0);
        pointB = new Vector3(3.8f, objectSpawns[i].transform.localPosition.y, 0);
    }

    //pointA = new Vector3(-3.8f, transform.localPosition.y, 0);
    //pointB = new Vector3(3.8f, transform.localPosition.y, 0);

}

// Update is called once per frame
void Update()
{
    //PingPong between 0 and 1
    float time = Mathf.PingPong(Time.time * speed, 1);
    //transform.position = Vector3.Lerp(pointA, pointB, time);

    for (int i = 1; i < objectSpawns.Length; i++)
    {
        objectSpawns[i].transform.position = Vector3.Lerp(pointA, pointB, time);
    }
}

public void addToList(){
    objectSpawns = new GameObject[val];
    int max = objectList.Length;
    int counter = 8; // set first object out of screen sight

    // Adds Scene Objects from objectList to objectSpawns
    // Size of SceneObjects determined by CannonPowerVal

    for (int i = 0; i < PlayerPrefs.GetInt("CannonPowerVal"); i++){

        objectSpawns.SetValue(objectList[Random.Range(0, max)], i);
        // Random x spawn(-2.8f, 2.8f)
        Instantiate(objectSpawns[i], new Vector2(transform.localPosition.x + Random.Range(-2.8f,2.8f), transform.localPosition.y + counter), Quaternion.identity);

        counter = counter + 5;
    }
}

}

實例化對象后,您忘記將引用添加到objectSpawns列表。

addToList()方法中:

GameObject object = Instantiate(objectSpawns[i],...);
objectSpawns.Add(object)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM