検索
スポンサードリンク
プロフィール
PinoMatchaさんの画像
PinoMatcha
どうも、PinoMatchaです!
ゲーム開発をちょこまか頑張ってます!
僕はまだ高校生で、プログラミングも独学です。 ですので実力は全然ですが、最善を尽くして頑張っております!

勉強や部活で忙しいので更新は不定期ですが、時間があるときに更新しようと思っているので、1日に2記事更新したりあるかもです。

名前の由来はピノ抹茶が好きだからじゃなくて、ピノと抹茶が好きだからです!
プロフィール
最新の記事
最新のコメント
最近の出来事
【unity5】カメラ移動・回転させる方法に多数の画像を追加しました。
カテゴリーアーカイブ
月別アーカイブ
ファン
YouTubeチャンネル


プログラミングで就職してみませんか?

2017年08月08日

【スプラトゥーン2】やってみました!

いま話題の「スプラトゥーン2」を
やってみました。


top_visual.png


というか、wiiUの
「スプラトゥーン」すら
まともにやった事無いんですけどね(笑)

今日が初めてです!


初めて使った武器は
「スプラマニューバー」?
でしたっけ。

あの二丁のやつです。


個人的には、回避があるので
使い易かったですね。


初めてスプラトゥーン2を
やって、3, 4 キルくらいだったと思います。

初めてにしては結構
倒せた方ではないかと……。


回避で「バヒュッ」とやって
「バババ!」「バンッ!」みたいな。


766aa511fe306649db94d5ff80b74a5e.png

楽しかったです…。


ただ、友達にやらせて貰った
だけなので家には無いんですよねー…。


買いたいですがお金がありません!
欲しいです!


お金が溜まったら買おうかな…。


では、今回はこれだけです!(笑)

では、皆さんも機会があれば
やってみて下さいね!



スポンサードリンク







posted by PinoMatcha at 14:37 | Comment(0) | TrackBack(0) | ゲーム

2017年08月06日

【unity5】スクリプトからオブジェクトを動かす

オブジェクトを移動させるのは、
そんなに難しい処理を必要としません。


が!プレイヤーの移動とかになると
あまり使われなかったりします。


プレイヤーの移動には、
CharacterController」や
(↑キャラクターコントローラー)
Rigidbodyに速度を加える
が良く使われると思います。

特にキャラクターコントローラーですかね?
良く使われるのは。


まぁ、僕はRigidbodyの方を使うんですが(笑)


っと、話が逸れましたね。
戻しましょう。


それで、この「位置を動かして移動」と
いうのは……よく考えると、あまり
使い道が無いような……?


ですがまぁ、知っておいて
損は無いと思います!


スポンサードリンク




this.transform.position

まずはゲームオブジェクトの位置の取得から
やっていきましょうか。


これが分からないと何も出来ません。
足したり、引いたりとかね。

だって

「何に足すのか、何から引けば良いのか」

が分からないですからね。


ゲームオブジェクトの位置の取得は
二種類の方法があります。

……といっても、
たどる道が違うだけなんですがね!


1.
//ゲームオブジェクトとして変数を宣言
GameObject obj;

void Start () {
 //obj.transform.positionでobjの位置が取得出来る
 Debug.Log(obj.transform.position);


2.
//Transformとして変数を宣言
Transform objTrans;

void Start () {
 //objTrans.positionでobjの位置が取得出来る
 //もう既にTransformだから
 Debug.Log(objTrans.position);


この2つの方法で、位置が取得出来ます。


僕がよく使うのは、
一番目の方ですかね。


なんか楽ですし。


実際に動かしてみる

無駄な部分ははぶきますね。

//ゲームオブジェクトとして変数を宣言
GameObject obj;

void Update () {
 //objの位置を変える
 obj.transform.position.x += 1;


これだと、
objのx軸に1ずつ足していく
という処理になります。


言葉で表すと、
「高速で右に移動していく」
ですかね。


なぜ高速かというと、
Update関数に書いてあるので…。


取り敢えず、こんな感じで動かせます。


また気が向けばもう少し
難しい処理で動かしてみましょうかね…?

では、また!



スポンサードリンク







2017年08月05日

【unity5】スマホゲーム「艦隊これくしょん」をunityで3Dアクションにしてみる

You Tubeで動画を公開しました!


スマホゲームで「艦隊これくしょん」っていうゲームありますよね?


通称「艦これ」ですが、今回はそのゲームを、
unity5を使って3Dアクションゲームにしてみます!


少しずつ作っていくので完成はいつになるんでしょう?


まぁ、気ままにやっていきますので。

気が向いたら見ていって下さいね。

スポンサードリンク




移動(とエフェクトをテキトーに)実装




エフェクト修正版





スポンサードリンク







2017年08月04日

【unity5】Vector3.Distance()で2点間の距離を測る : 解説あり

unityでゲーム作ってる時、

「ここからここまでの距離が知りたい」

とかありますよね?


プレイヤーに一番近いアイテムを拾ったり、
目的地までの距離を測ったりと、色々な事に使えます。


一見、難しそうですが超簡単です。


それでは、やっていきましょう。


スポンサードリンク





Vector3.Distance()の使い方

Vector3.Distance(Vector3 a, Vector3 b);


これだけです(笑)。


a, b にはTramsform.positionが入ります。
まぁ位置ですね。


これだけで使えます!


解説

まず使用例を挙げますと、
using UnityEngine;
using System.Collections;

public class Example : MonoBehaviour {

 public Transform other;

 void Start () {
  float _distance = Vector3.Distance(other.position, transform.position);
  print(_dinstance);
 }
}

こんなのがあります。


クラスの中を解説しますが、
「other」という変数を宣言しています。

型は「Transform」です。
Transformは「位置・回転・大きさ」のプロパティを扱います。

今回はそのTransformの中の「位置」を使います。


Start関数に移ります。

float _distance で変数を宣言していますが、
型は「float」です。


距離は、少数で取得されるためです。
a, b 間の距離を少数で取得する、という事ですね。


そして、「otherの位置」と「ここ(ゲームオブジェクト自身)の位置」の間の
距離を算出して「_distance」に入れています。


最後の「Print(_distance);」ですが、
これは、コンソールに取得した距離を表示させているだけですので、
まぁそんなに気にしなくても良いかと。




ではでは、これで終わりです。

※この記事のサンプルはUnity - スクリプトリファレンスの改良版を公開しています。



スポンサードリンク







2017年07月26日

「3DのARPGを作ってみよう!」ゲームの完成イメージ!

この記事、絶対最初に載せるべきでしたよね......。
忘れていた...。



気を取り直して、
この記事のカテゴリーである、

「3DのARPGを作ってみよう!」

の完成イメージをYouTubeにアップしました。



大体は、このイメージを目指していきますが、
もう少し「ゲームとしてプレイできる」レベルまで
引き上げたいと思っています!


ですので、動画にあるのに実装しなかったり、
動画にないものが実装されたりと...。

そんな事があると思います。

まぁ、気長に付き合って下さい!



スポンサードリンク







2017年07月25日

unityでプレイヤーを動かす:変数の解説

前に出して実装した
プレイヤーの移動のプログラムの、
変数部分を解説します。


プログラムの理解は大事なんですけど、
上手く説明出来てるかどうか…


というか、こんなチマチマ記事を出すより、
一気に出した方が良いんだろうか…。


まぁ、それはそれでまた考えます。


そろそろ本題に入りましょう。

スポンサードリンク




変数部分


まず、変数はどこかというと、
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;

これですね。

これが変数の全体図になります。


この中の初めの一行、
public Animator anim;


これは、キャラクターを
走らせる、歩かせる、剣を振るなどの
「アニメーション(キャラの動き)」を
設定するのに使います。

ですが正直いって今回の
「プレイヤーの移動」には要らないので
説明は後回しにして、また後日ですね。


public bool isGrounded;

これは、接地判定に使います。

処理の方は後日説明しますが、
地面に着いているか、いないか
を判定します。


地面に着いていれば true、
着いていなければ false として使います。


public RaycastHit hit;

これも接地判定で使います。


「地面に当たっているか」を
判定するのに使います。


public float InputHorizontal;
public float InputVertical;

これらは上から順に、
横の入力
縦の入力となっています。

プレイヤーの移動にはキー入力が
欠かせませんので、この2つの変数に
「入力時の数値」を代入して使います。



public Rigidbody rb;

これは、物理演算です。
重力や、力を加えるのに使えます。


本プログラムでは、
この変数へは必須です。



何故かというと、本プログラムでの移動は
物体に「加速度」を加える事で
移動を表現します。


他にも位置自体を移動させたり
unityにある「キャラクターコントローラー」
というのも使えます。


ですが個人的にキャラクターコントローラーは
好きではありませんのでこれの移動はまた記事を…
………書くかなぁ?



public float moveSpeed;
public float jumpPower = 30f;

これらは上から順に
移動速度ジャンプさせる力です。


ジャンプは、「上向きに力を加えて」
表現するため、この様に「どのくらいの力か」を
決めておきます。



public GameObject Cam;
public Vector3 Cam_forward;
public Vector3 move_forward;

Camは、移動の方向を決めるためのカメラです。


必要があればプログラムで取得しますが、
今はインスペクタからで良いでしょう。


Cam_forwardは、
「プレイヤーが進むべき正面」です。

カメラの向きからキャラクターが
進む、正面として使います。


move_forwardは、カメラの向きに関係なく、
入力から進む方向を決める」のに使います。


例えば、カメラの正面に対して
後ろに進むのか右に進むのか、など
「キーの入力」からの進む方向を扱います。



public Vector3 InputMagnitude;

これで変数は最後ですね。


これは何に使うのかというと、
入力の大きさ」で使います。


例をあげると、
「キーの押し込みが
 小さすぎる場合は移動しない」
という処理を作るのに役立ちます。


終わりに

以上が変数全体となります。

ここでは大体のイメージしか
記述していないので、
分からなかったところもあるかと ^_^;


そこは、実際の処理を解説する時に
もう少し詳しくやるのでご安心を!


では、この辺にしたいと思いますが……。

……未だに記事を一括で書くかどうか
結論が出ません……。

どちらの方が良いのでしょうか…?



スポンサードリンク





2017年07月24日

ゲームプログラム アクションロールプレイングゲームを作る youtube動画アップのお知らせ

youtubeに、unity5でarpgの接地判定の動画を
アップしました!



以前の動画も見ていってください!

チャンネル登録もお願いします!



スポンサードリンク





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くらいが丁度いいかと。



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


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

お疲れ様でした!

終わりに

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

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


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

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


スポンサードリンク







2017年07月13日

Start, Awake関数とは?

Start関数とAwake関数、違いが分かりますか?

とはいえ、違いという違いは
ありませんね。

僕の知識が浅いだけかも
しれないですが(笑)


使いどころといえば、
状況によって変わるくらいでしようか。

こんなこと言っていても
分からないと思うので解説を始めます!

スポンサードリンク



Start関数

これは、よく使ってきましたね。

ゲーム開始直後に一度だけ呼ばれる関数です。

ステータスの初期化とか、
セーブデータのロードなどに使えますね。



......あ、セーブ&ロードの記事も
書きましょうかね。
......いつか。



話を戻しまして、関数はこう書きます。
void Start () { 処理; }

……特に書くことは無いですね。
後は処理を書いていくだけですし(笑)

Awake関数

この関数がStart関数と違う点は、

オブジェクトが非アクティブでも
 Start関数と同じタイミングで呼ばれる


という事だけです。

後はStartと同じですね。

まとめ

結論!

Start関数はオブジェクトが
 非アクティブだと呼ばれないが、
  Awake関数だと呼ばれる!


以上!


スポンサードリンク







2017年07月07日

【unity5】引数を使ってみよう!

僕は思いました。

「あれ?
 あの『はじめに』、
 無くてもいいんじゃない?」

と。

結果、題名を書かずに始めればいい、
との判定を下しましたので
今後は無しの方向でいきたいと思います。

よろしくお願いしますm(_ _)m



スポンサードリンク



引数とは

まず、引数がなんたるかを説明します。



難しく言えば、
関数実行時に渡す値の事です。

簡単に言えば、
お前、関数を実行するならこの値持ってけよ

みたいな感じですかね?

まぁ、手土産的な何かです。

この辺はサンプルを出して
解説していきましょうか。

SampleCode.cs
public class SampleCode : MonoBehaviour {

 void Start () {
  //count変数を宣言
  //50を代入
  var count = 50;

  //countを引数にして、関数実行
  ReceiveValue(count);
 }

 //count を int型 val として受け取る
 void ReceiveValue (int val) {
  //コンソールに出力
  Debug.Log(val);
 }
}


では、解説していきます。

(すみません、using・・・・は
省いています)

Debug.Log();

を見て下さい。

この処理は、()の中の値を
unity の Console に出力します。

まぁ、状況を確認したりするのに
使ったりしますね。





さて、このデバッグ処理はこの前
説明したような気がするのでこの辺にして。

まず、Start関数から見ていきます。


コメント化もしてありますが、
count変数を作り 50 を代入しています。

これは、関数内で宣言しているので、
この関数内でしか使えないはずですね。

ですが、ゲームを実行するとちゃんと
コンソールに「50」と表示されます。

あれ、デバッグ処理があるのは
違う関数のはず……



そこで、引数が関わってくるんですね。

変数作ったあとは、
ReceiveValue関数を実行しています。


これを実行する際に、
引数に count を設定しています。

ですのでRecieveValue()で引数を
受け取れる訳ですね。

引数だけで見ると、
count = val
となるも同然です。



countを引数にして、
valとして受け取る。

RecieveValue関数では、
count を val として使えます。

val = 50 ですね。


まぁ、これが良く分からなかったら
普通に変数を作っちゃえば良んですが(笑)



今回はこの辺になりますかね。

他に説明する事もありませんし。

終わりに


引数、使えると便利ですよ。
スクリプトまたいでも使えますからね。

ですから、覚えておいた方が良いでしょう。

ではでは、今回はこれで。



スポンサードリンク