アフィリエイト広告を利用しています

現在ははてなブログで投稿しています!

広告

posted by fanblog

2017年07月18日

unity5でプレイヤーの移動をしてみる : 取り敢えず実装

今回は、解説なしで取り敢えず実装、という形で
この記事はやっていきます。

更新、遅れましたね...。
色々大変でした...。

夏休みだというのに、
課題と部活ばかりですし...。



まぁ、気を取り直していってみましょう!



スポンサードリンク




ソースコード

まずはソースコードを出しますね。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Player_Move : MonoBehaviour {

 public Animator anim;
 public bool isGrounded;
 public RaycastHit hit;

 public float InputHorizontal;
 public float InputVertical;
 public Rigidbody rb;
 public float moveSpeed;
 public float jumpPower = 30f;
 public GameObject Cam;
 public Vector3 Cam_forward;
 public Vector3 move_forward;
 public Vector3 InputMagnitude;

 void Start () {
  rb = this.gameObject.GetComponent<Rigidbody>();
  anim = this.gameObject.GetComponent<Animator>();
 }

 void FixedUpdate () {
  //*****接地判定*****//
  if (Physics.SphereCast(this.gameObject.transform.position + new Vector3(0, 2f, 0), transform.lossyScale.x * 0.5f, Vector3.down, out hit, 2f)) {
   isGrounded = true;
  } else {
   isGrounded = false;
  }
  //*****************//
  }

 void Update() {
  if (isGrounded) {
   InputHorizontal = Input.GetAxis("Horizontal");
   InputVertical = Input.GetAxis("Vertical");
   InputMagnitude = new Vector3(InputHorizontal, 0, InputVertical);

   jumpPower = 30f;

   //*****移動*****//
   Cam_forward = Vector3.Scale(Cam.transform.forward, new Vector3(1, 0, 1)).normalized;

   move_forward = Cam_forward * InputVertical + Cam.transform.right * InputHorizontal;

   rb.velocity = move_forward * moveSpeed + new Vector3(0, rb.velocity.y, 0);

   //移動方向に向きを変える
   if (move_forward != Vector3.zero) {
    transform.rotation = Quaternion.LookRotation(move_forward);
   }
   //***************//
  }
 }
}


以上がソースコードとなります。

これを使い、プレイヤーの移動を行います。

移動の実装


まず、事前準備として色々します。

始めに、動かすプレイヤーを作成します。

Hierarchyで右クリック、
3D Object > Capsule でカプセルを作成します。

005.png

そしたら、カプセルを選択し、
右のPositionを
x, z を共に0とし、
y を 3 にします。

プレイヤーの作成は終わりです。

006.png

次に、
Project > Create > C# Scriptでスクリプトを作成し、
名前を「Player_Move」とします。

(ここで、Player_Moveとしなければエラーが出ます。
 仕様が分かっていれば変更オーケーです!)

そしたらPlayer_Moveを開き、
初めからから記述してある文章を全て消し、
上のソースコードを貼り付けます。

ここで1つ、訂正をお願いします!
勝手に改行されていなければ、ですが…、

23, 24行目になるでしょうか、
「<>」と、大文字になっているので、
「<>」この様に小文字に直して下さい!


html(インターネット上のブログラム)の
関係で、こうするしかなかったんです……。

2017/8/17 追記
上のメッセージは無視して下さい。
小文字に修正しました。




次はプレイヤー(Capsule)に
「Rigidbody」を付けます。

これがないと動きません!

007.png



そしたら作ったプレイヤー(Capsule)に
Player_Moveと取り付けます。

(ProjectのスクリプトをCapsuleにD&Dでできます。)

これでプレイヤーにスクリプトが取り付けれました。



プレイヤーが動くための地面がないので
地面を作ります。

[Hierarchy > 3D Object > Plane]で地面を作成し、
x, zのScaleを10にします。

これで地面が大きくなったと思います。

そして最後、
プレイヤー(Capsule)についている
「Player_Move」をInspectorで見てください。

008.png

その中にある、「Cam」に
Hierarchyの「Main Camera」をD&Dします。

あとは、実行!

......と言いたいところですが、
Player_Move の MoveSpeed を適当に設定してください。


このままだと、「移動の速度が0」、
つまり移動しないので......。

30くらいが丁度いいかと。



これで、晴れて移動が可能です!


今度こそ、実行すれば動きます!

お疲れ様でした!

終わりに

実装編は、これにて終了です。
後は、解説ですね。

これが終わったら……
何しましょうかね?


まぁ、それは後々
考えていきます。

それでは、また次回まで。


スポンサードリンク







投稿コメント
* 気軽にコメントくださいー *

※ ブログに表示されるのは、主の承認が必要なので時間がかかります!
  コメントに気づかない場合もありますので、返信が遅れる場合も...

お名前:

メールアドレス:


ホームページアドレス:

コメント: 必須項目

この記事へのトラックバックURL
https://fanblogs.jp/tb/6505070
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック
検索
プロフィール
ピノまっちゃさんの画像
ピノまっちゃ
どうも、ピノまっちゃ(PinoMatcha)です!
ゲーム制作をちょこまか頑張ってる大学生で、プログラミングも独学です。
ですので実力は全然ですが、最善を尽くして頑張っております!

名前の由来はピノの抹茶味が好きだからじゃなくて、ピノと抹茶が好きだからです!


更新 : 不定期!
プロフィール
新着記事
最新のコメント
更新事項
2018/8/2 定期更新への変更の報告に追記しました。

2018/5/10 「続きを読む」機能の使い方がやっと分かりました。

2017/9/14 プレイヤーを動かす:関数の解説の一部を書き直しました。

2017/8/1 【unity5】カメラ移動・回転させる方法に多数の画像を追加しました。
カテゴリーアーカイブ
YouTubeチャンネル
Fantiaリンク
よければ応援お願いします!

Pixivアカウント
現在、調整中です…
×

この広告は30日以上新しい記事の更新がないブログに表示されております。