public void SetMinoTile() { if (minoController == null) { Debug.LogWarning("mino contoller is null"); return; } MinoScript mino = minoController.GetMino().GetComponent <MinoScript>(); tile = mino.GetCell(); }
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); }
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); } }
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; } }