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; } } }
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); }
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; }
//楽曲の情報を表示 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; }); }
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); }
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(); }
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; }