Example #1
0
    public void SetMinoTile()
    {
        if (minoController == null)
        {
            Debug.LogWarning("mino contoller is null");
            return;
        }
        MinoScript mino = minoController.GetMino().GetComponent <MinoScript>();

        tile = mino.GetCell();
    }
Example #2
0
    void GenerateSprite()
    {
        //以前生成していたスプライトを削除
        foreach (Transform child in transform)
        {
            Destroy(child.gameObject);
        }

        MinoScript minoS  = mino.GetComponent <MinoScript>();
        GameObject sprite = minoS.AsSprite();

        sprite.transform.position += transform.position;
        sprite.transform.SetParent(transform);
        mino.transform.SetParent(transform);
    }
Example #3
0
    public void Register(GameObject mino_)
    {
        if (mino_ != null)
        {
            if (nextContainer != null)                                             //もし次のコンテナのリンクがあるなら
            {
                nextContainer.GetComponent <NextContainerScript>().Register(mino); //自分の持っていたミノを次のコンテナに渡す
            }
            mino = mino_;                                                          //ミノの上書き
            foreach (Transform child in transform)                                 //ミノによって生成していたセルを削除
            {
                Destroy(child.gameObject);
            }

            MinoScript minoS  = mino.GetComponent <MinoScript>();
            GameObject sprite = minoS.AsSprite();
            sprite.transform.position += transform.position;
            sprite.transform.SetParent(transform);
            mino.transform.SetParent(transform);
        }
    }
Example #4
0
    private void FixedUpdate()
    {
        if (!Controller.Instance.CheckInsideField(transform.position))
        {
            Respawn();
        }

        if (positionHistory.Count > 200)
        {
            positionHistory.RemoveFirst();
        }

        transform.position += (Vector3)moveDir * moveSpeed * Time.deltaTime;
        RaycastHit2D hit = MyRaycast();

        Debug.DrawRay(transform.position, moveDir * radius, Color.red);
        Debug.Assert(hit.collider != this);

        if (hit.collider == null)
        {
            positionHistory.AddLast(transform.position);
            return;
        }

        Wall       wall = hit.transform.GetComponent <Wall>();
        MinoScript mino = hit.transform.GetComponent <MinoScript>();

        if (wall != null)
        {
            player.AddScoreToOther(10);
            wall.Deactivate();
        }

        else if (mino != null)
        {
            mino.Hit();
        }

        // hij knalt ergens tegenaan en stapt terug in zn positiehistorie totdat dit niet meer het geval is
        while (positionHistory.Count > 0)
        {
            transform.position = positionHistory.Last.Value;
            positionHistory.RemoveLast();

            RaycastHit2D nextHit = MyRaycast();
            Debug.Assert(nextHit.collider != this);

            if (nextHit.collider == null)
            {
                float angle = Mathf.Round(Mathf.Atan2(moveDir.y, moveDir.x) * Mathf.Rad2Deg / 90) * 90;
                // bepaal invalshoek
                Vector3 inAngle = Vector3.Normalize(new Vector3(hit.point.x, hit.point.y, 0) - transform.position);
                // bereken normaalvector
                Vector3 normal = new Vector3(Mathf.Cos(angle * Mathf.Deg2Rad), Mathf.Sin(angle * Mathf.Deg2Rad), 0);
                moveDir = Vector3.Reflect(inAngle, normal);
                return;
            }

            // ga naar het volgende punt
            hit = nextHit;
        }
    }