public void MovedPlayer(Vector3 currentPlayerPosOnMap, Vector3 moveVec) { //二次配列上のプレイヤーが移動する予定地 Vector3 nextPositionOnMap = currentPlayerPosOnMap + moveVec; bool changedSprite = false; //二次配列上で、次に書き換える予定の名前 MapDate.eGroundName nextGroundName; Vector3 beforePlayerPos = movedPlayerPosList[movedPlayerPosList.Count - 1]; //移動予定地が前回移動した地点だった場合 if (nextPositionOnMap == beforePlayerPos) { movedPlayerPosList.RemoveAt(movedPlayerPosList.Count - 1); //前回移動した地点だったが、白い床だった場合余計な関数を呼ばないようにする if (mapDate.mapNumberDate[(int)currentPlayerPosOnMap.y, (int)currentPlayerPosOnMap.x] == (int)MapDate.eGroundName.eWhite) { return; } changedSprite = true; nextGroundName = MapDate.eGroundName.eDefaultPannel; mapDate.mapNumberDate[(int)currentPlayerPosOnMap.y, (int)currentPlayerPosOnMap.x] = (int)nextGroundName; mapDate.mapObjectDate[(int)currentPlayerPosOnMap.y, (int)currentPlayerPosOnMap.x].GetComponent <ChangedSprite>().ChangeSprite(changedSprite); //spriteがもとに戻るので、そこにあった足跡も消す footPrinter.DeleteOneFoot(); Vector3 ppp = nextPositionOnMap; effectSpawner2.SetEffect(ppp); audioSource.PlayOneShot(changeClip); } //移動予定地が変化前だった場合 else if (mapDate.mapNumberDate[(int)nextPositionOnMap.y, (int)nextPositionOnMap.x] == (int)MapDate.eGroundName.eDefaultPannel) { changedSprite = false; nextGroundName = MapDate.eGroundName.eChangedPannel; mapDate.mapNumberDate[(int)nextPositionOnMap.y, (int)nextPositionOnMap.x] = (int)nextGroundName; mapDate.mapObjectDate[(int)nextPositionOnMap.y, (int)nextPositionOnMap.x].GetComponent <ChangedSprite>().ChangeSprite(changedSprite); movedPlayerPosList.Add(currentPlayerPosOnMap); //spriteを変化させたので、そこに足跡を生成させる Vector3 footPos = nextPositionOnMap; Vector3 footDirection = currentPlayerPosOnMap - nextPositionOnMap; //footQua = Quaternion.Euler(nextPositionOnMap-currentPlayerPosOnMap); footPrinter.SetFoot(footPos, footDirection); effectSpawner.SetEffect(footPos); audioSource.PlayOneShot(deleteClip); } else if (mapDate.mapNumberDate[(int)nextPositionOnMap.y, (int)nextPositionOnMap.x] == (int)MapDate.eGroundName.eWhite) { movedPlayerPosList.Add(currentPlayerPosOnMap); } else { return; } }