###Unity5 3D/2Dゲーム開発本のスクリプトに関して
「Unity5 3D/2Dゲーム開発本」を通してunityの勉強をしています。本に書いてあるようにしっかりスクリプトを書いているのですが、思ったように動作してくれません。
###実現したいこと
プレイヤーはx座標が-2,-1,0,1,2の5つのレーンを常に前進し続ける・・といったゲームです。
「5つのレーンを常に前進し続ける」が実現目標です
###とりあえず、コード全文
public class Nejikocontroller : MonoBehaviour { CharacterController characon; Animator charaanim; const int minline = -2; const int maxline = 2; const float lanewidth = 1.0f; Vector3 movedirection = Vector3.zero; public float gravity; public float speedz; public float speedjump; public float speedx; public float accelerationz; int targetline; // Use this for initialization void Start () { characon = GetComponent<CharacterController>(); charaanim = GetComponent<Animator>(); } // Update is called once per frame void Update () { if (Input.GetKeyDown("left")) movetoleft(); if (Input.GetKeyDown("right")) movetoright(); if (Input.GetKeyDown("space")) jump(); float acclleratedz = movedirection.z + (accelerationz * Time.deltaTime); movedirection.z = Mathf.Clamp(accelerationz, 0, speedz); float ratiox = (targetline * lanewidth - transform.position.x) / lanewidth; movedirection.x = ratiox * speedx; movedirection.y -= gravity * Time.deltaTime; Vector3 globaldirection = transform.TransformDirection(movedirection); characon.Move(globaldirection * Time.deltaTime); if (characon.isGrounded) movedirection.y = 0; charaanim.SetBool("run", movedirection.z > 0f); } public void movetoleft() { if (characon.isGrounded && targetline > minline) targetline--; } public void movetoright() { if (characon.isGrounded && targetline < maxline) targetline++; } public void jump() { if (characon.isGrounded) { movedirection.y = speedjump; charaanim.SetTrigger("jump"); } } }
###疑問部分
float ratiox = (targetline * lanewidth - transform.position.x) / lanewidth; movedirection.x = ratiox * speedx;
まずlanewidthは1なのに割ってる時点で正しいコードとは思えないです・・
z方向はこれで常に前進していくのは分かるのですが、現状、あるx方向に進み続けてしまいます・・
###試したこと
公式サイトも確認しましたが、誤植ではないようです。ただ、気になるのは第6刷発行で、2017年に発行されたものみたいです。
書籍の質問はマナー違反??なのかもしれませんが、苦戦しているのでぜひ助言をいただければと・・よろしくお願いします
コードは右記のように、バッククォート3つで囲むと整形されるので回答者が内容を見やすくなります。 ```hoge```