43291人加入学习
(204人评价)
【旧版】Unity初级案例 - 愤怒的小鸟

制作完成于 2018-1-22 本教程基于 Unity 2017.2开发

价格 免费

黄字

黄字layer 是针对摄像机的层 渲染课件的那种。

[展开全文]

任务23的时候感觉不需要这么复杂,点击恢复按钮时直接执行句话就可以了,不需要GetComponent<Animator>().Play("Resume");

[展开全文]

sorting layer设置player,然后设置order in layer可以设置层级

[展开全文]

1、panel嵌板

2、anchored position锚点位置

[展开全文]

添加小鸟废除的拖尾动作

导入尾迹拖尾的插件包

1.给小鸟添加Test MyTrail 的脚本

2.给小鸟添加子物体,trail,然后给小鸟添加 weapon Trail 和 Mesh render 组件,并添加 weapon trail 材质球

3.修改

 

修改Height为0.

修改time 为 0.3

[展开全文]

spritranderer rander 调用图片

public sprite hurt 获取图片hurt

render.sprite=hurt;

[展开全文]

猪的碰撞检测:

oncollisionenter2D【两个物体同时碰撞在刚体和碰撞盒子里面】或ontriggerenter2D【期中一个就行】

[展开全文]

整合场景,解决无法显示画线弹弓的问题

添加几个木块

Block 方块 添加 Collider 和 rigidbody2d以及Pig脚本,调整受伤和消失的数值

添加受伤的图片

添加死亡获得的分数

制作成预制体

然后后面的就更换图片就可以了

但是石头的话将 Rigidbody 中的 Mass 改成3

坚硬程度也要比其它的高

加背景

添加草

修改层级,优化遮挡关系

解决画线和武器拖尾的隐藏问题,就是将Default 层更改为 -1,或者背景层的Z轴稍微修改以下

 

 

[展开全文]

将Sprite中的Single改为Multipe对多张图片进行裁剪成单个  Slice图片裁剪

[展开全文]

09-小鸟的飞出

其实就是使【Spring Joint 2D 组件】失活

 

1.获取到组件

        public SpringJoint2D sp;

在Awake()下进行获取

       private void Awake()
    {
        sp = GetComponent<SpringJoint2D>();
    }

 

2.鼠标抬起,失活

 private void OnMouseUp() //鼠标抬起
    {
            isClick = false;      
           sp.enabled = false;

        }

    }

 

3.小鸟飞出速度过快

  小鸟【Rigidbody 2D】中的【Body Type】参数改成【kinematic】

   3-1:在脚本里更改

  protected Rigidbody2D rg;

       private void Awake()
    {
        sp = GetComponent<SpringJoint2D>();

         rg = GetComponent<Rigidbody2D>();
    }

 

   3-2:鼠标按下

        private void OnMouseDown()//鼠标按下
    {
            isClick = true;

            rg.isKinematic = true;

            //Kinematic :运动
    }

 

鼠标抬起

private void OnMouseUp() //鼠标抬起
    {
      
            isClick = false;
            rg.isKinematic = false; 

           sp.enabled = false;    //粘贴到Fly()中      

    }  
 

4.小鸟飞出后的操作

 void Fly()
    {
 
        sp.enabled = false;
   
    }

4-1:让电脑零点1、2秒时间计算

需要用到【Invoke函数】

Invoke("方法名",多长时间调用)

 

 private void OnMouseUp() //鼠标抬起
    {

            isClick = false;
            rg.isKinematic = false;
            Invoke("Fly", 0.1f);     

    }
 

 

 

 

 

 

[展开全文]

Vector3.Distance();//计算两向量之间位移 

向量.normalized; //向量单位化

[展开全文]

任务10-猪的受伤

搭建场景

新建【空物体】:env,空物体归零

找图片:THEME_01_THEME_1,修改【Sprite Mode】为Multiple -- 裁一下 --图片拖上去--添加【碰撞盒Box Cllider 2D】,碰撞盒上面不要填满

主题拖到env下边--大量复制【command+D】

 

给小鸟增加阻力

bird--Rigibody 2D--Angular Drag:2

 

加入  【猪:pig】  编码:103

更改猪的图层为:player

给猪加一个【Rigibody 2D Angular Drag:2 】、【Circle Collider 2D     radius:0.35】

 

猪的死亡和受伤

添加脚本:Pig

2个碰撞检测方法

     OnCollisionEnter2D(Collision2D collision)//碰撞检测

 OnTriggerEnter2D(Collision2D collision)//触发检测

定义2个变量

    public float maxSpeed = 10;//最大速度

     public float minSpeed = 5; //最小速度

 

判断一下

引出概念:相对速度

 if (collision.relativeVelocity.magnitude > maxSpeed)//直接死亡
        {

            Dead();

        } else if (collision.relativeVelocity.magnitude > minSpeed && collision.relativeVelocity.magnitude < maxSpeed) {
            render.sprite = hurt;//更换图片:104
            
        

获取组件

 private SpriteRenderer render;

 

 

在Awake下进行赋值

 private void Awake()
    {
        render = GetComponent<SpriteRenderer>();
    }

 

获取组件

 

 

最大速度改为:8

最小速度改为:4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[展开全文]

//3D改2D

1.Edit->Project Settings...->Editor->Default Behaviour ModeMode->2D

2.摄像机组件->Projection->Orthographic

 

//图片切割

原生图片->Sprite2D->Sprite Mode->Multiple->Sprite Editor

 

//层级关系

Sprite Renderer->

Sorting Layer   层级越下,图片越上                    Order in Layer  整数越大,图片越上 

[展开全文]

Rigidbody:

Body Type  :Dynamic  

                     Kinematic :开启动力学,不受 

[展开全文]

else if 那边 速度 大于最小 小于最大,以前是按照血量来计算 这次学了个新的函数   相对速度

[展开全文]