示例#1
0
    void LinecastCut(Vector2 lineStart, Vector2 lineEnd)
    {
        List <GameObject> gameObjectsToCut = new List <GameObject>();

        RaycastHit2D[] hits = Physics2D.LinecastAll(lineStart, lineEnd, layerMask);
        foreach (RaycastHit2D hit in hits)
        {
            if (HitCounts(hit))
            {
                gameObjectsToCut.Add(hit.transform.gameObject);
            }
        }
        if (gameObjectsToCut.Count > 0)
        {
            Camera.main.GetComponent <CameraManager>().setShake(0.2f);
            Camera.main.GetComponent <FreezeFX>().FreezeScreen();
        }

        foreach (GameObject go in gameObjectsToCut)
        {
            SpriteCutterOutput output = SpriteCutter.Cut(new SpriteCutterInput()
            {
                lineStart              = lineStart,
                lineEnd                = lineEnd,
                gameObject             = go,
                gameObjectCreationMode = SpriteCutterInput.GameObjectCreationMode.CUT_OFF_COPY,
            });
            ModifyOutputObjects(output.firstSideGameObject);
            ModifyOutputObjects(output.secondSideGameObject);
        }
    }
    public void LinecastCut(Vector2 lineStart, Vector2 lineEnd, int layerMask = Physics2D.AllLayers)
    {
        Stick             stick            = FindObjectOfType <Stick>();
        List <GameObject> gameObjectsToCut = new List <GameObject>();

        RaycastHit2D[] hits = Physics2D.LinecastAll(lineStart, lineEnd, layerMask);
        foreach (RaycastHit2D hit in hits)
        {
            if (HitCounts(hit))
            {
                gameObjectsToCut.Add(hit.transform.gameObject);
            }
        }

        foreach (GameObject go in gameObjectsToCut)
        {
            SpriteCutterOutput output = SpriteCutter.Cut(new SpriteCutterInput()
            {
                lineStart              = lineStart,
                lineEnd                = lineEnd,
                gameObject             = go,
                gameObjectCreationMode = SpriteCutterInput.GameObjectCreationMode.CUT_OFF_ONE,
            });

            if (output != null && output.secondSideGameObject != null)
            {
                //Rigidbody2D newRigidbody = output.secondSideGameObject.AddComponent<Rigidbody2D>();
                //newRigidbody.velocity = output.firstSideGameObject.GetComponent<Rigidbody2D>().velocity;
                output.secondSideGameObject.transform.position = stick.transform.position;
                SlicedStick slicedStick = output.secondSideGameObject.AddComponent <SlicedStick>();;
            }
        }
    }
    void LinecastCut(Vector2 lineStart, Vector2 lineEnd, int layerMask = Physics2D.AllLayers)
    {
        List <GameObject> gameObjectsToCut = new List <GameObject>();

        RaycastHit2D[] hits      = Physics2D.LinecastAll(lineStart, lineEnd, layerMask);
        int            NumOfhits = 0;

        foreach (RaycastHit2D hit in hits)
        {
            if (HitCounts(hit))
            {
                Debug.Log($"NumOfhits {NumOfhits.ToString()}");
                NumOfhits++;
                gameObjectsToCut.Add(hit.transform.gameObject);
            }
        }

        foreach (GameObject go in gameObjectsToCut)
        {
            SpriteCutterOutput output = SpriteCutter.Cut(new SpriteCutterInput()
            {
                lineStart              = lineStart,
                lineEnd                = lineEnd,
                gameObject             = go,
                gameObjectCreationMode = SpriteCutterInput.GameObjectCreationMode.CUT_OFF_ONE,
            });

            if (output != null && output.secondSideGameObject != null)
            {
                Rigidbody2D newRigidbody = output.secondSideGameObject.AddComponent <Rigidbody2D>();
                newRigidbody.velocity = output.firstSideGameObject.GetComponent <Rigidbody2D>().velocity;
            }
        }
    }
示例#4
0
    static public MapCharacter create(string aAiName, string aSpriteFileName, Direction aDirection, string aName = "", Vector2?aColliderSize = null)
    {
        if (aColliderSize == null)
        {
            aColliderSize = new Vector2(0.6f, 0.3f);
        }
        //画像
        Sprite tOrigen = Resources.Load <Sprite>("Sprites/character/" + aSpriteFileName);

        Sprite[,] tSprites = new Sprite[3, 4];
        for (int x = 0; x < 3; x++)
        {
            for (int y = 0; y < 4; y++)
            {
                tSprites[x, y] = SpriteCutter.Create(tOrigen.texture, new Rect(x * 100, y * 100, 100, 100), new Vector2(0.5f, 0f), 80);
            }
        }
        Dictionary <string, List <Sprite> > tDic = new Dictionary <string, List <Sprite> >();

        tDic["standUp"] = new List <Sprite>()
        {
            tSprites[1, 0]
        };
        tDic["standDown"] = new List <Sprite>()
        {
            tSprites[1, 3]
        };
        tDic["standLeft"] = new List <Sprite>()
        {
            tSprites[1, 2]
        };
        tDic["standRight"] = new List <Sprite>()
        {
            tSprites[1, 1]
        };
        tDic["moveUp"] = new List <Sprite>()
        {
            tSprites[0, 0], tSprites[1, 0], tSprites[2, 0], tSprites[1, 0]
        };
        tDic["moveDown"] = new List <Sprite>()
        {
            tSprites[0, 3], tSprites[1, 3], tSprites[2, 3], tSprites[1, 3]
        };
        tDic["moveLeft"] = new List <Sprite>()
        {
            tSprites[0, 2], tSprites[1, 2], tSprites[2, 2], tSprites[1, 2]
        };
        tDic["moveRight"] = new List <Sprite>()
        {
            tSprites[0, 1], tSprites[1, 1], tSprites[2, 1], tSprites[1, 1]
        };
        MapCharacter tCharacter = MyBehaviour.create <MapCharacter>();

        tCharacter.init(aAiName, tDic, (Vector2)aColliderSize, aDirection, aName);
        return(tCharacter);
    }
示例#5
0
    private void Hakkem(GameObject enemyToBeHakkedDoorDeMidden, Vector2 slashStart, Vector2 slashEnd)
    {
        //remove potentials script the ugly way
        SpriteCutterOutput output = SpriteCutter.Cut(new SpriteCutterInput()
        {
            lineStart              = slashStart,
            lineEnd                = slashEnd,
            gameObject             = enemyToBeHakkedDoorDeMidden,
            gameObjectCreationMode = SpriteCutterInput.GameObjectCreationMode.CUT_OFF_NEW,
        });

        gameObject.GetComponent <DragCatapultMovement>().ResetJumpCount();
        StartCoroutine(DelayedForce(output, slashStart, slashEnd));
    }
 protected void Awake()
 {
     mAnimator           = this.createChild <GifMaterialAnimator>();
     mAnimator.mIsPlayed = true;
     mAnimator.mInterval = 0.4f;
     if (mSprite != null)
     {
         processSprite();
     }
     //mesh生成
     mMesh             = gameObject.AddComponent <StandMesh>();
     mMesh.mRenderMode = Mesh2D.RenderMode.transparent;
     mMesh.mSprite     = SpriteCutter.split(mSprite.texture, new Vector2(100, 100), new Vector2(0.5f, 0))[0][0];
     mMesh.initialize();
     mAnimator.mCoverUV = mMesh.mFilter.mesh.uv;
     mAnimator.mMesh    = mMesh.mFilter.mesh;
 }
示例#7
0
 //楽曲の情報を表示
 public void showMusic(MusicListFileData.MusicListElement aData)
 {
     mSelectedMusic = aData;
     mMusicData     = DataFolder.loadScoreData(aData.file);
     //曲名
     mTitleText.text = mMusicData.title;
     //選択中の難易度に合わせて表示更新
     changeDifficult(mSelectedDifficult);
     //音声
     playMusic();
     //サムネイル
     DataFolder.loadThumbnailAsync(mMusicData.thumbnail, (aSprite) => {
         Sprite tSprite = SpriteCutter.setRatio(aSprite, 7, 6);
         mThumbnailRenderer.transform.localScale = new Vector3(7 / tSprite.bounds.size.x, 7 / tSprite.bounds.size.x, 1);
         mThumbnailRenderer.sprite = tSprite;
     });
 }
示例#8
0
    static public Sprite load(string aFileName, float aX, float aY, float aWidht = 1, float aHeight = 1, Vector2?aPivot = null)
    {
        Vector2 tPivot = (aPivot == null) ? new Vector2(0.5f, 0.5f) : (Vector2)aPivot;
        string  tKey   = aX.ToString() + "," + aY.ToString() + "," + aWidht.ToString() + "," + aHeight.ToString() + "," + tPivot.ToString();

        if (!mSprites.ContainsKey(aFileName))
        {
            mSprites[aFileName] = new Dictionary <string, Sprite>();
        }
        if (mSprites[aFileName].ContainsKey(tKey))
        {
            return(mSprites[aFileName][tKey]);
        }
        Sprite  tOrigen = Resources.Load <Sprite>(aFileName);
        Vector3 tSize   = tOrigen.bounds.size;
        Sprite  tSprite = SpriteCutter.Create(tOrigen.texture, new Rect(aX * 100, (tSize.y - 1 - aY - aHeight + 1) * 100, aWidht * 100, aHeight * 100),
                                              tPivot, 100, 0,
                                              SpriteMeshType.FullRect);

        mSprites[aFileName][tKey] = tSprite;
        return(tSprite);
    }
示例#9
0
    public void LinecastCut(Vector2 lineStart, Vector2 lineEnd, int layerMask = Physics2D.AllLayers)
    {
        List <GameObject> gameObjectsToCut = new List <GameObject>();

        RaycastHit2D[] hits = Physics2D.LinecastAll(lineStart, lineEnd, layerMask);
        foreach (RaycastHit2D hit in hits)
        {
            if (HitCounts(hit))
            {
                gameObjectsToCut.Add(hit.transform.gameObject);
            }
        }

        foreach (GameObject go in gameObjectsToCut)
        {
            SpriteCutterOutput output = SpriteCutter.Cut(new SpriteCutterInput()
            {
                lineStart              = lineStart,
                lineEnd                = lineEnd,
                gameObject             = go,
                gameObjectCreationMode = SpriteCutterInput.GameObjectCreationMode.CUT_OFF_COPY,
            });
        }
    }
        private void MenuItem_SpriteCutter_Click(object sender, RoutedEventArgs e)
        {
            SpriteCutter spriteCutter = new SpriteCutter();

            spriteCutter.ShowDialog();
        }
示例#11
0
    void LinecastCut(Vector2 lineStart, Vector2 lineEnd, int layerMask = Physics2D.AllLayers)
    {
        ready = false;
        List <GameObject> gameObjectsToCut = new List <GameObject>();

        RaycastHit2D[] hits = Physics2D.LinecastAll(lineStart, lineEnd, layerMask);

        foreach (RaycastHit2D hit in hits)
        {
            if (HitCounts(hit))
            {
                gameObjectsToCut.Add(hit.transform.gameObject);
            }
        }

        foreach (GameObject go in gameObjectsToCut)
        {
            segmentArea = 4;
            if (intersectionSegments.ContainsKey(go))
            {
                segmentArea = intersectionSegments[go];
            }
            mass = go.GetComponent <Rigidbody2D>().mass;



            SpriteCutterOutput output = SpriteCutter.Cut(new SpriteCutterInput()
            {
                lineStart              = lineStart,
                lineEnd                = lineEnd,
                gameObject             = go,
                gameObjectCreationMode = SpriteCutterInput.GameObjectCreationMode.CUT_OFF_ONE,
            });


            if (output != null && output.secondSideGameObject != null)
            {
                output.firstSideGameObject.tag  = "shadow";
                output.secondSideGameObject.tag = "shadow";

                Rigidbody2D newRigidbody = output.secondSideGameObject.AddComponent <Rigidbody2D>();
                newRigidbody.gravityScale = 1;

                output.firstSideGameObject.GetComponent <Rigidbody2D>().isKinematic  = true;
                output.secondSideGameObject.GetComponent <Rigidbody2D>().isKinematic = true;



                float mass1 = mass * segmentArea / 4;
                float mass2 = mass - (mass * segmentArea / 4);

                if (mass1 < 0.2f)
                {
                    mass1 = 0.2f;
                }
                if (mass2 < 0.2f)
                {
                    mass2 = 0.2f;
                }

                if (output.firstSideGameObject.GetComponent <Collider2D>().bounds.size.magnitude > output.secondSideGameObject.GetComponent <Collider2D>().bounds.size.magnitude)
                {
                    output.firstSideGameObject.GetComponent <Rigidbody2D>().mass  = mass1;
                    output.secondSideGameObject.GetComponent <Rigidbody2D>().mass = mass2;
                }
                else
                {
                    output.secondSideGameObject.GetComponent <Rigidbody2D>().mass = mass2;
                    output.firstSideGameObject.GetComponent <Rigidbody2D>().mass  = mass1;
                }



                toEnable.Add(output.firstSideGameObject);
                toEnable.Add(output.secondSideGameObject);
            }
        }

        ready = true;
    }