当前位置:   article > 正文

unity学习笔记-Instantiate运行时实例化预制件_unity的instantiate

unity的instantiate

Instantiate(预制体,transform.position,transform.rotation);

创建一个5*5*5的正方体的代码如下,

  1. public class InstantiationTest : MonoBehaviour
  2. {
  3. public GameObject myPrefab;
  4. public int 长 = 5;
  5. public int 宽 = 5;
  6. public int 高 = 5;
  7. void Start()
  8. {
  9. for(int y = 0; y < 高; y++)
  10. {
  11. for(int x = 0; x < 宽; x++)
  12. {
  13. for (int z = 0; z < 高; z++)
  14. {
  15. Instantiate(myPrefab, new Vector3(x, y, z), Quaternion.identity);
  16. }
  17. }
  18. }
  19. }
  20. }

把预制件拖动到脚本的myPrefab字段里

 

创建方块组成的圆圈     转自官方手册在运行时实例化预制件 - Unity 手册

  1. // 以圆形形式实例化预制件
  2. public GameObject prefab;
  3. public int numberOfObjects = 20;
  4. public float radius = 5f;
  5. void Start()
  6. {
  7. for (int i = 0; i < numberOfObjects; i++)
  8. {
  9. float angle = i * Mathf.PI * 2 / numberOfObjects;
  10. float x = Mathf.Cos(angle) * radius;
  11. float z = Mathf.Sin(angle) * radius;
  12. Vector3 pos = transform.position + new Vector3(x, 0, z);
  13. float angleDegrees = -angle * Mathf.Rad2Deg;
  14. Quaternion rot = Quaternion.Euler(0, angleDegrees, 0);
  15. Instantiate(prefab, pos, rot);
  16. }
  17. }

效果图如下,来自官方手册

 

实例化飞弹和爆炸,来自官方手册

以下脚本显示了如何使用 Instantiate() 函数来发射飞弹,脚本放在枪管上

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class FireProjectile : MonoBehaviour
  5. {
  6. //这个脚本通过在放置它的GameObject的位置实例化它来发射一个预制的投射物,然后在同一个GameObject的前进方向上设置速度。
  7. public Rigidbody projectile;
  8. public float speed = 4;
  9. void Update()
  10. {
  11. if (Input.GetButtonDown("Fire1"))
  12. {
  13. Rigidbody p = Instantiate(projectile, transform.position, transform.rotation);
  14. p.velocity = transform.forward * speed;
  15. }
  16. }
  17. }

 以下脚本(放置在飞弹预制件上)执行以下操作:在飞弹碰撞物体后,在飞弹的当前位置实例化爆炸,然后删除飞弹游戏对象。

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class Projectile : MonoBehaviour
  5. {
  6. //这个脚本放置在一个抛射的GameObject上
  7. public GameObject explosion;
  8. void Start()
  9. {
  10. //抛射物在10秒后被删除,无论它是否与任何物体碰撞(为了防止丢失的实例永远留在场景中)
  11. Destroy(gameObject,10);
  12. }
  13. void OnCollisionEnter()
  14. {
  15. //击中某物:引起爆炸,并移除抛射物
  16. Instantiate(explosion,transform.position,transform.rotation);
  17. Destroy(gameObject);
  18. }
  19. }

 

效果图

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/116403
推荐阅读
相关标签
  

闽ICP备14008679号