子弹工厂

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 子弹工厂(配合枚举型)
/// </summary>
public class BulletFactory 
{
    public static List<Bullet> CreateBullet(BulletType type, int count) 
    {
        List<Bullet> list = null;
        switch (type) 
        {
            case BulletType.A:
                list = BulletFactory.CreateA(count,type);
                break;
            case BulletType.B:
                list = BulletFactory.CreateB(count,type);
                break;
        }
        return list;
    }
    /// <summary>
    /// 创造A类型的子弹
    /// </summary>
    /// <param name="count">子弹的数量</param>
    /// <param name="_type">子弹的类型</param>
    /// <returns></returns>
    private static List<Bullet> CreateA(int count,BulletType _type) 
    {
        List<Bullet> list = new List<Bullet>(count);
        for (int i = 0; i < count; i++) 
        {
            //设置子弹的类型
            GameObject obj = GameObject.CreatePrimitive(PrimitiveType.Sphere);
            //子弹的旋转
           // obj.transform.Rotate(new Vector3(90f,0f,0f));
            //设置子弹的大小
            obj.transform.localScale = new Vector3(0.1f,0.1f,0.1f);
            //设置子弹的颜色
            obj.GetComponent<Renderer>().material.color = Color.red;
            Bullet  bullet = obj.AddComponent<Bullet>();
            //设置子弹的类型
            bullet.type = _type;
            //把子弹添加到链表中
            list.Add(bullet);
        }
        return list;
    }
    /// <summary>
    /// 创造B类型的子弹
    /// </summary>
    /// <param name="count">子弹的数量</param>
    /// <param name="_type">子弹的类型</param>
    /// <returns></returns>
    private static List<Bullet> CreateB(int count,BulletType _type) 
    {
        List<Bullet> list = new List<Bullet>(count);
        for (int i = 0; i < count; i++) 
        {
            //设置子弹的类型
            GameObject obj = GameObject.CreatePrimitive(PrimitiveType.Capsule);
          //设置子弹的旋转
            obj.transform.Rotate(new Vector3(90f,0f,0f));
            obj.transform.localScale = new Vector3(0.007f, 0.01f, 0.007f);
            Bullet bullet = obj.transform.gameObject.AddComponent<Bullet>();//obj.GetComponent<Bullet>();
            //设置子弹的类型
            bullet.type = _type;
            //把子弹添加到链表中
            list.Add(bullet);
        }
        return list;
    }
}
/// <summary>
/// 子弹的类型
/// </summary>
public enum BulletType 
{
    A,B
};

猜你喜欢

转载自blog.csdn.net/wk201403010114/article/details/78464830