예제 #1
0
 private void OnTriggerEnter2D(Collider2D collision)
 {
     if (collision.gameObject.name == "Hero")
     {
         LoadController load = GameObject.Find("SavaPoint").GetComponent <LoadController> ();
         load.Reload(collision.gameObject);
     }
 }
예제 #2
0
    // Update is called once per frame
    void Update()
    {
        Vector3 vec = Vector3.right * transform.localScale.x;

        //int offset = 0;


        for (int i = 0; i < m_shootingSide.Length; i++)
        {
            for (int j = 0; j < m_halfSideBulletNumber; j++)
            {
                Vector3 angle = Quaternion.AngleAxis(m_shootingSide [i] * (j + 1) * m_angleInterval, Vector3.forward) * vec;
                Vector3 end   = transform.position + angle * m_rayLength;
                Debug.DrawLine(transform.position, end, Color.red);

                hit = Physics2D.Raycast(transform.position, angle, m_rayLength, m_layer);
                if (hit.collider != null)
                {
                    //m_vertices [i * m_halfSideBulletNumber + j + offset] = new Vector2 (hit.point.x - transform.position.x, hit.point.y - transform.position.y);
                    if (hit.collider.name == "Hero")
                    {
                        LoadController load = GameObject.Find("SavaPoint").GetComponent <LoadController> ();
                        load.Reload(hit.collider.gameObject);
                    }
                }
                else
                {
                    //m_vertices [i * m_halfSideBulletNumber + j + offset] = angle * m_rayLength;
                }
                //input
                //求法线向量与物体上方向向量点乘,结果为1或-1,修正旋转方向
                //float aAngle = Vector3.Angle (Vector3.right, angle) * Mathf.Sign (Vector3.Dot (angle, Vector3.up));
                //aSimpleBullet.transform.Rotate (Vector3.forward, aAngle);
                //aSimpleBullet.m_isPlayerFire = m_isPlayerFire;
                //aSimpleBullet.InitBullet (angle, m_bulletSpeed, m_bulletAttack, m_bulletDuration, m_bulletRepelDistance);
            }
            //offset += 1;
        }

        Debug.DrawLine(transform.position, (transform.position + vec * m_rayLength), Color.red);
        hit = Physics2D.Raycast(transform.position, vec * m_rayLength, m_rayLength, m_layer);
        if (hit.collider != null)
        {
            //m_vertices [m_halfSideBulletNumber -2] = new Vector2 (hit.point.x - transform.position.x, hit.point.y - transform.position.y);

            if (hit.collider.name == "Hero")
            {
                LoadController load = GameObject.Find("SavaPoint").GetComponent <LoadController> ();
                load.Reload(hit.collider.gameObject);
            }
        }
        else
        {
            //m_vertices [(i + 1) * m_halfSideBulletNumber] = vec * m_rayLength;
        }
        //m_vertices [m_vertices.Length - 1] = Vector3.zero;

        //Vector2 temp = m_vertices [1];
        //m_vertices [1] = m_vertices [0];
        //m_vertices [0] = temp;

        //Vector3 [] vertices3D = System.Array.ConvertAll<Vector2, Vector3> (m_vertices, v => v);

        //// Use the triangulator to get indices for creating triangles
        //Triangulator triangulator = new Triangulator (m_vertices);
        //int [] indices = triangulator.Triangulate ();


        //Color [] colors = new Color [vertices3D.Length];
        //for (int i = 0; i < colors.Length; i++) {
        //	colors [i] = Color.red;
        //	colors [i].a = 0.5f;
        //}

        //// Create the mesh
        //var mesh = new Mesh {
        //	vertices = vertices3D,
        //	triangles = indices,
        //	colors = colors
        //};


        //mesh.RecalculateNormals ();
        //mesh.RecalculateBounds ();



        //filter.mesh = mesh;
    }