3 回答

TA貢獻1830條經驗 獲得超3個贊
您正在嘗試為對象分配一個新的轉換,這是不可能的。默認情況下,Unity 中的每個對象都有一個您無法刪除的 Transform。它是每個游戲對象必須擁有的唯一組件。
您不能為游戲對象分配新的變換,但可以為游戲對象分配新的位置。
// works but the method naming is inappropriate
// Either the list should be Vector3 or the method should be named GetWeaponTransform
List<Transform> weaponPositions = ship.GetWeaponLocations();
// if we stick with a collection of Transform
for(int i = 0 ; i < equippedWeapons.Length && i < weaponPositions.Count ; i++)
{
equippedWeapons[i].GetComponent<Weapon>().setPosition(weaponPositions[i].position); // added .position
}
最后:
Transform transformOfWeaponOnShip;
public void setPosition(Vector3 pos)
{
transformOfWeaponOnShip.position = pos;
}

TA貢獻1864條經驗 獲得超6個贊
如果你想改變變換位置,你必須改變而positionOfWeaponOnShip.position不是positionOfWeaponOnShip. 我希望這可以幫助你!
Transform positionOfWeaponOnShip;
public void setPosition(Transform pos)
{
positionOfWeaponOnShip.position = new Vector3(pos.x, pos.y, pos.z);
}

TA貢獻1834條經驗 獲得超8個贊
問題似乎是每個引用都是針對相同的預制件,而不是該預制件的實例。
為了解決這個問題,在啟動武器腳本時,我實例化了該武器的一個新版本,而不是引用預制件。這現在有效:)
- 3 回答
- 0 關注
- 108 瀏覽
添加回答
舉報