コード例 #1
0
    //作成 佐藤 竜也
    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))));//加速度ログ
        //移動ここまで
    }
コード例 #2
0
ファイル: Menu.cs プロジェクト: tomizawayuta2019/Magiaker
 /// <summary>
 /// 魔法作成
 /// </summary>
 public void GotoMagicMakeScene()
 {
     CloseMenu();
     MainSceneManager.OpenScene(ConstData.MagickMakeScene);
 }