スライムを増やして、プレイヤーも追加。
プレイヤーはカーソルキーで移動。
キーを押すと、24dot移動しますが、移動自体はコルーチンを使って、スムーズに移動。
コルーチンで移動中に、キー入力を見てると斜めに移動できるので、
コルーチンで移動中はキーは見ない。
移動可能かどうかはLinecastで判定してるけど、重くないのかな?
昔ながらに配列で持ってもいいとは思いますが。
void Update () { if(!isMove) return; float ax = Input.GetAxisRaw("Horizontal"); float ay = Input.GetAxisRaw("Vertical"); if(ax!=0 || ay!=0 ) { Vector2 start=rb2D.position; Vector2 end =start + new Vector2(3*ax,3*ay); if( move(end) ) { StartCoroutine(SmoothMovement(end)); } } } bool move(Vector2 end) { Vector2 start=rb2D.position; boxCollider.enabled = false; RaycastHit2D hit = Physics2D.Linecast(start,end, blockingLayer); boxCollider.enabled = true; if(hit.transform==null) return true; return false; } private IEnumerator SmoothMovement(Vector2 end) { isMove=false; float sqrRemainingDistance = (rb2D.position-end).sqrMagnitude; while(sqrRemainingDistance > float.Epsilon) { Vector2 newPostion = Vector2.MoveTowards(rb2D.position, end, inverseMoveTime * Time.deltaTime); rb2D.MovePosition (newPostion); sqrRemainingDistance = (rb2D.position - end).sqrMagnitude; yield return null; } isMove=true; }