编辑代码

切水果
5.产生水果 制作炸弹预制体

6.切的动画逻辑 爆炸效果

//Legacy shaders/Particles/Additive shader的作用是剔除图片上的黑色部分

//粒子系统 Particle System
 属性面板Texture Sheet Animation 纹理动画

      Tiles x 横向纹理图片个数 y竖向纹理图片个数



1.OnMouseDown 鼠标点击事件 添加BoxCollider 的gameobject 可以直接添加鼠标点击事件

2.交换宝石
 获取行,获取列, 交换宝石的在数组组的位置,交互宝石的数据,更新宝石的位置
 3.交换宝石补充
  1.点击时修改宝石的颜色表示选中,组件名称SpriteRender .color
  可交换条件
    1。row 相同 colunm-1 和column+1(而且colum ==1 只有columm +1. columm == length-1 columm-12 column相同 row —1 和row+1 row ==1 row +1. row == length-1 row-1)
等价于
     mathf.Abs 绝对值 ,(Mathf.Abs(current.row -c.row) + Mathf.Abs(current.columm -c.columm) == 1 表示相邻
    2.判断是否有匹配的
    79:00
      水平方向匹配
         
      垂直方向匹配
  public boll isSelected {
      set{
          ifvalue)
          {
              spriteRender.color = color.red;
          }
          else {
               spriteRender.color = color.white;
          }
      }
  }

Input.GetMouseButton(0)//鼠标左键按下,在按下的整个过程中,一直不停执行,抬起则停止执行
Input.GetMouseButtonDown(0)//鼠标左键刚刚按下。只执行一次
fire = Input.GetMouseButton(0)
if(fire && !fire_prev) fire_Down = true
if(!fire && fire_prev) fire_up = true

fire_prev = fire; // prev是上一次 down 按下 up抬起

// 划线 lineRender 材质使用 trail
// anxia 
if(fire——down)
{

     start =INput.MousePostion
     end= INput.MousePostion

}
// 拖动中
if(fire)
{
    var a = camera.main.screenPointToWorld(start);
        var b = camera.main.screenPointToWorld(start);
        if(Vector3.Dirtance(a,b)>0.1f)
        {
         // 加入线段数组中,线段数组固定10个点
            // 加入第11个元素,时舍弃第一个点,后面的前移
            linePart++;
          addTailPoint();
            end = screenInp;
        }

        // 线段的alpha大于0.5的时候,可以坐射线检测
       if(trail_alpha>0.5)
       {
           int rayCastCount = 10;
      for(int p = 0;p<8;p++)
       {
     for(int i = 0;i<rayCastCount;i++)
       {
    
     vector3 s =camera.main.worldToScreenPoint( trailPos[p]);
     vector3 e = camera.main.worldToScreenPoint( trailPos[p+1]);
     Ray ray = camera.main.ScreenPointToRay(vector.Lerp(s,e,i/rayCastCount));
      rayCastHit  hit;
      if(Physics.RayCast(ray,out hit,100))
      {
          BlowObjec(hit);
      }
       }
       }

       // 给linRender 赋值相关的postion信息。最大10个点
       for(int i = 0;i< trailPos.count;i++)
       {
           lineRender.setPostion(i,trailPos[i]);
       }
       }

        // 切割刀水果
        

 void addTailPoint(){
  if(linePart<=9)
            {
                for(int i = 0;i<= 9;i++)
                {
                    trailPos[i] = camera.main.screenPointToWorld(new vector3(start.x,start.y,10));
                }
            }
            else {
                  for(int i = 0;i<9;i++)
                {
                    trailPos[i] =trailPos[i+1]
                }
                                    trailPos[9] = camera.main.screenPointToWorld(new vector3(start.x,start.y,10));

            }
 }
}
void BlowObjec(RayCastHit hit)
{
    // 检测到未删除的水果
    if(hit.collider.gameObject.tag != “Destroyed”)
    {
        //1.消除水果
Destory(hit.collider.gameObject);
  
          2.添加破开的水果

          3.添加果汁

             4.积分
          if(hit.collider.gameObject.tag != "bomb") point++; else point -=5;
          point = point <0 ?0: point;
          hit.collider.gameObject.tag = “Destroyed”
       
    }
}

// 用粒子系统做炸弹炸开的烟花效果