Unity3D基础项目(一):打箱子升级版之豪华特效

2020-06-02 17:05:15 浏览数 (3)

最终效果图

半成品效果图:

cube.gif

1、开始阶段,场景搭建,资源导入

场景搭建

加群获取资源

2、添加第一个脚本,创建我们要打击的墙体
代码语言:javascript复制
public class CreatBox : MonoBehaviour {
 void Start () {
   for (int i = 0; i < x; i  ) // 控制横排为X
  {
    for (int j = 0; j < y; j  ) // 控制竖排为Y, 当横排为0时,垂直方块个数为8个
    {
         GameObject box = GameObject.CreatePrimitive(PrimitiveType.Cube);
         box.transform.position = new Vector3(-4.0f   i, 0.5f   j, 4);
         box.GetComponent<Renderer>().material.color = new Color(Random.Range(0f, 1f), Random.Range(0f, 1f), Random.Range(0f, 1f));
         Rigidbody r =  box.AddComponent<Rigidbody>();
         //r.mass = 10;
         box.tag = "Box";
       } 
    }
  }
}
3、实例化子弹

这里有两种方式一种,通过预制物,一种通过动态加载内置物

Paste_Image.png

4、销毁子弹脚本

我们的子弹可能创建无数个,所以为了性能,要及时销毁。

Paste_Image.png

5、子弹特效

Paste_Image.png

6、画瞄准镜

如何画一个瞄准镜

代码语言:javascript复制
    private void OnGUI()
    {
        // 对于一张图片定位只需要在屏幕确定两个位置
        /******************************
         *           |   距离顶部多少  *
         *---------******             *    
         *---左边 --| 图 |             *
         *---多少 --| 片 |             *
         *         ******              *
         *                             *
         *****************************
         同时拿到图片的宽度和高度就能够显示了在我们的屏幕上了   
                
         注意:要确保鼠标在图片的中心点,即宽度与高度的一半  
         */
        float left = Input.mousePosition.x - pic.width / 2;
        float top = Screen.height - Input.mousePosition.y - pic.height / 2;
        GUI.DrawTexture(new Rect(left,top,pic.width,pic.height), pic);   
    }
7、力度控制

力度

创建子弹

代码语言:javascript复制
// 创建子弹(通过内置物,就是系统内置的基本3D类型)
 GameObject bullet = GameObject.CreatePrimitive(PrimitiveType.Sphere);
//bullet.transform.position = this.transform.position;
bullet.transform.position = Camera.main.transform.position;
bullet.transform.localScale = new Vector3(0.2f, 0.2f, 0.2f);

// 给实例化出来的子弹添加脚本
bullet.AddComponent<bulletDestroy>();
// 给子弹添加特效
bullet.AddComponent<BulletEffic>();
// 发射子弹(要有冲击力,那就需要刚体组件)
Rigidbody r = bullet.AddComponent<Rigidbody>();

 r.AddForce((hit.point - transform.position) * FourcePower, ForceMode.Impulse);

如何调整力度?

力度调整

8、最终效果图:

Paste_Image.png

1 人点赞