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 关注
- 115 浏览
添加回答
举报