Instantiate 使用预制体生成物体 | Unity C#

很多时候需要使用按钮、手势等操作交互,生成游戏物体,一般使用 Instantiate 函数,用prefab预制体生成物体


一个简单的例子,事先在Inspector界面中绑定好预制体

public Class PlayerManager : MonoBehaviour
{
    public GameObject Player;
    public Transform pos;//位置
    
    void CreatePlayer()
    {
        instantiate(Player, pos, Quartenion.identity);
    }
}

看一下与 instantiate 所有的相关函数

与 instantiate 相关的函数

Object.Instantiate | Unity Official

public static Object Instantiate(Object original);
public static Object Instantiate(Object original, Transform parent);
public static Object Instantiate(Object original, Transform parent, bool instantiateInWorldSpace);

public static Object Instantiate(Object original, Vector3 position, Quaternion rotation);
public static Object Instantiate(Object original, Vector3 position, Quaternion rotation, Transform parent);

带有 parent 参数的函数,表示生成的游戏对象都会挂载到指定的父物体上;无 parent 参数的函数,则无父物体

instantiateInWorldSpace ,如果为 false 表示其位置是相对于父物体,true 则以世界坐标显示(这里的坐标指预制体的坐标)

rotation 表示其旋转参数,一般如果不需要修改,则传入 Quaternion.identity 表示一个单位矩阵,不旋转


总结

总的来说,如果需要挂载在某个物体下,之后需要随着物体移动,那么使用带 parent 参数的函数
如果需要旋转,选择有 rotation 的函数
instantiateInWorldSpace 决定预制体的相对原点是父物体还是世界坐标原点,即Vector3.zero

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现这个功能,可以按照以下步骤: 1. 创建一个武器模型,并将其保存为预制。 2. 在角色身上创建一个空物体,作为武器的父物体。 3. 在角色身上创建一个空物体,作为武器生成的位置。 4. 在角色身上创建一个脚本,用于控制武器的生成和跟随。 5. 在脚本中,使用Instantiate()函数生成武器预制,并将其作为子物体添加到武器父物体下。 6. 在脚本中,使用Transform.SetParent()函数将武器父物体作为武器生成位置的父物体。 7. 在脚本中,使用Transform.localPosition和Transform.localRotation属性对武器进行定位和旋转,使其正确跟随角色。 下面是一个简单的示例代码: ```c# public class WeaponController : MonoBehaviour { public Transform weaponParent; // 武器父物体 public Transform weaponSpawnPoint; // 武器生成位置 public GameObject weaponPrefab; // 武器预制 private GameObject currentWeapon; // 当前武器 void Update() { if (Input.GetKeyDown(KeyCode.Space)) // 按下空格键生成武器 { if (currentWeapon != null) { Destroy(currentWeapon); // 如果当前已有武器,则销毁它 } currentWeapon = Instantiate(weaponPrefab, weaponParent); // 生成新武器并添加到武器父物体下 currentWeapon.transform.SetParent(weaponSpawnPoint); // 将武器父物体作为武器生成位置的父物体 currentWeapon.transform.localPosition = Vector3.zero; // 定位武器 currentWeapon.transform.localRotation = Quaternion.identity; // 旋转武器 } } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值