我希望我的玩家拿起一个枪械预制件,该枪械是一个掉落的物品,然后将旧枪换成新枪。当前结构如下:
这是我尝试过的。我的想法是将一个孩子实例化为玩家,然后以某种方式移除“枪”孩子并将新枪放置在相同位置。着火点已经是我新的预制件的孩子了。所以我只需要交换两者。以下脚本将添加到地面上。
public class WeaponPickUp : MonoBehaviour
{
public GameObject launcher;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
void OnCollisionEnter2D(Collision2D col){
if(col.gameObject.name =="Player"){
GameObject go = Instantiate(launcher, new Vector3(0,0,0), Quaternion.identity) as GameObject;
go.transform.parent = GameObject.Find("Player").transform;
Destroy(gameObject);
}
}
}
任何想法从这里去哪里?非常感谢您提供任何反馈。
您不需要找到Player游戏对象,因为碰撞已经检测到它,您可以获取要替换的枪支的位置以用作新枪支的位置:
void OnCollisionEnter2D(Collision2D col)
{
if (col.gameObject.name == "Player")
{
Vector3 spawnPosition = col.transform.GetChild(0).position;
Destroy(col.transform.GetChild(0));
Instantiate(launcher, spawnPosition, Quaternion.identity, col.transform);
Destroy(gameObject);
}
}
将脚本附加到播放器。在“场景”视图中,调整您的枪支位置,然后进行预制。
public GameObject gunPrefab;
void OnCollisionEnter2D(Collision2D col){
if(col.gameObject.name =="gun"){
Instantiate(gunPrefab, transform); //Instantiate(prefab, parent);
Destroy(col.gameObject);
}
}