//作成 佐藤 竜也 void walk() { //カメラの前をとる Vector3 CameraFoward = playerCamera.transform.forward; //カメラの横をとる Vector3 CameraRight = playerCamera.transform.right; //Yいらないのでプレイヤーの位置にする CameraFoward.y = transform.forward.y; CameraRight.y = transform.right.y; //MagickMakeSceneへ if (Input.GetKeyDown(KeyCode.F4 /*KeyCode.E*/)) { MainSceneManager.OpenScene(ConstData.MagickMakeScene); } //現在のスピード float speed; //shiftを押したときspeedをrunSpeedの値に変更 if (Input.GetKey(KeyCode.LeftShift)) { speed = runSpeed; } //離したときspeedをwalkSpeedの値に変更 else { speed = walkSpeed; } //キーを押していないときmoveを0に Vector3 move = Vector3.zero; //Aを押したときmoveにxに-1を入れる if (Input.GetKey(KeyCode.A)) { //move += Vector3.left * speed * Time.deltaTime; move += -CameraRight * speed; } //Wを押したときmoveにzに+1を入れる if (Input.GetKey(KeyCode.W)) { //move += Vector3.forward * speed * Time.deltaTime; move += CameraFoward * speed; } //Sを押したときmoveにzに-1を入れる if (Input.GetKey(KeyCode.S)) { //move += Vector3.back * speed * Time.deltaTime; move += -CameraFoward * speed; } //Dを押したときmoveにxに+1を入れる if (Input.GetKey(KeyCode.D)) { //move += Vector3.right * speed * Time.deltaTime; move += CameraRight * speed; } //test用即死 //if(Input.GetKey(KeyCode.F9)) //{ // Death(); //} if (move == Vector3.zero) { anim.SetBool("Move", false); } else if (move != Vector3.zero) { anim.SetBool("Move", true); } //移動距離を計算する float movedistance = (speed / Mathf.Sqrt(2.0f) * Time.deltaTime); RaycastHit hit; //自身の位置から移動方向に自身の半径+移動距離分の長さのRayを飛ばす if (Physics.Raycast(transform.position, move, out hit, movedistance + radius)) { //Debug.Log(hit.point); //移動距離をClampして移動距離を制限する movedistance = Mathf.Clamp(movedistance, 0, hit.distance - radius > 0 ? hit.distance - radius : 0); } //transform.positionを変更して移動する transform.position += (move.normalized * movedistance); //歩いてる方向にplayerが向くobjを動かす walkObj.transform.position = transform.position + move.normalized * 10; //魔法うってないときに向く if (!Input.GetMouseButtonDown(0) || !Input.GetKeyDown(KeyCode.Space)) { if (gameObject.transform.position != walkObj.transform.position) { transform.LookAt(new Vector3(walkObj.transform.position.x, transform.position.y, walkObj.transform.position.z)); walknow = true; } else { walknow = false; } } //斜め移動の時moveの値を斜め用に変える //rb.MovePosition(transform.position + (move.normalized * (speed / Mathf.Sqrt(2.0f) * Time.deltaTime))); //Debug.Log((move.normalized * (speed / Mathf.Sqrt(2.0f))));//加速度ログ //移動ここまで }
/// <summary> /// 魔法作成 /// </summary> public void GotoMagicMakeScene() { CloseMenu(); MainSceneManager.OpenScene(ConstData.MagickMakeScene); }