スキップしてメイン コンテンツに移動

2D横スクロールの横移動とジャンプをする

自作イラストを使って配管工おじさんをする。


物凄く言葉が足りませんが、自作イラストを使って2D横スクロールの基本動作となる
横移動とジャンプ

これを作っていきたいと思います。


今回使うもの。


スライムの自作イラスト。
(ご自由にお使いください。ただし、著作権の放棄をしているわけでは有りません。例を上げれば、LINEスタンプにしたりとか、犯罪に使うとかをしないでくださいって感じです。)


目次

1.動作紹介
2.GameObjectの構成紹介
3.スクリプト紹介(そのままコピー出来る物有り)

以上の様に進めていきたいと思います。


1.動作紹介


動作紹介という名の動画の宣伝だったりしますが、実際こんな感じで動くってのが見て貰えます。

若干、横移動時にカクツキというか地面に引っかかっている様に見えますが、仕様です。

いずれ時間があったら直すかも。(多分直さない)

ぶっちゃけ2Dについては、まだ3つくらいしか作りかけが無いのでほぼ初心者です。

あくまで、今回はスクリプトの紹介程度に思って頂ければ幸いです。


2.GameObjectの構成紹介

まずは、プレイヤー構成の紹介から。

一応取込も紹介しておきますね。

まず、上にあるスライムをAseets内に入れます。
取り込んだ画像を選択し、Texuture TypeをSprite(2D and UI)に変更します。


ステージ内に、Createから2D→Spriteを配置します。
その中のSprite RendererのSpriteで先程取り込んだスライムの画像を選択します。

そして、スライムの大きさに合わせてPhysics2DからCircleCollider2Dを取りつけます。
これがプレイヤーの当たり判定になります。

続いてプレイヤーに重力を付けます。
Physics2DからRigidbody2Dを取り付けます。これに関しては触らなくてもいいかと。
場合によっては弄る事も有りますが、今回はスルーします。

基本的にステージ上で動かすものには、Collider(当たり判定)とRigidbody(重力とか)の二つは大体付けます。

そして最後に、今回ジャンプをするためのスクリプトをプレイヤー付けます。
内容は後述になります。

今回はもう一つ。地面の設定をします。


まずは一番上のTagに「jimen」を作成して付けます。

ぶっちゃけ自分で分かるもので有れば、何でもいいんですけどね。
後でジャンプのスクリプトに使うので、英字で作っていればなんでも良いですよ。

こちらは固定された物になるので、Rigidbody2Dは必要ありません。

今回のスクリプトでは、[OnCollisionEnter]というのを使うのですが、これはTagとColliderが有れば使えます。

※3Dで同じような動作をする場合は少し変わりますが、それはまたいずれ動画とブログで書きます。


3.スクリプトの紹介(一番下にスクリプトを載せています)


まずはプレイヤー操作スクリプトです。

プレイヤースクリプトは、シーン内に単体のGameObjectとして配置しておきます。

void Update内で左右の入力を読み取り、それに合わせてプレイヤーの左右の移動とプレイヤーの向きを変えています。

new Vector3 (0.05f,0.0f,0.0f);の0.05がx方向の移動量になるので、これを変えれば動くスピードも変わります。

そして下のvoid OnClickはジャンプボタンに設定する内容になってます。

変数が0のときジャンプができ、ジャンプの力がかかった後、1に変更にします。

0に戻す処理はジャンプ判定スクリプトにて行います。


そしてこのジャンプ判定スクリプトをプレイヤーに付け、プレイヤーが地面のTag[jimen]に触れた時、先程のスクリプトの変数を0に戻します。

今回のスクリプトは、一度ジャンプしたらという物ですが、二段ジャンプも出来ます。


こんな感じでifの条件をx<=1とすると、xが0と1の場合にジャンプの処理が行われるので、二段ジャンプになります。

といってもそのまま使うと、少し変な動きになりましたが。
出来なくは無いです。

ジャンプ量を変えるには、new Vector(0.0f,7.5f);の7.5の部分を変えたら変わります。


さて、ここまで2D横スクロール用の移動とジャンプを見てきましたが、いかがでしたか?

分からない事が有ればコメントやTwitterの方に連絡して貰えれば、分かる範囲でお答えしたいと思います。

それでは、最後までお読み頂きありがとうございました。

また次のブログもよろしくお願い致します!


スクリプト紹介

Player.cs  (OnClickは1回ジャンプ、OnClick2は二段ジャンプ用です。)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityStandardAssets.CrossPlatformInput;

public class Player : MonoBehaviour {

public static int x;

public GameObject Player1;

void Start () {

}

// Update is called once per frame
public void Update () {
Debug.Log (x);
float h = CrossPlatformInputManager.GetAxis ("Horizontal");

Player1.transform.position += new Vector3 (0.05f * h, 0.0f, 0.0f);

if (h >= 0.1) {
Player1.transform.rotation = Quaternion.Euler (0.0f, 0.0f, 0.0f);
}
if (h <= -0.1) {
Player1.transform.rotation = Quaternion.Euler (0.0f, 180.0f, 0.0f);
}
}

public void OnClick(){
if (x == 0) {
Rigidbody2D rb = Player1.GetComponent<Rigidbody2D> ();
Vector2 force = new Vector2 (0.0f, 7.5f);
rb.AddForce (force, ForceMode2D.Impulse);
x = 1;
}
}

public void OnClick2(){
if (x <= 1) {
Rigidbody2D rb = Player1.GetComponent<Rigidbody2D> ();
Vector2 force = new Vector2 (0.0f, 7.5f);
rb.AddForce (force, ForceMode2D.Impulse);
x += 1;
}
}
}


Jumphantei.cs

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

public class jumphantei : MonoBehaviour {

public void OnCollisionEnter2D (Collision2D hit){
if (hit.gameObject.tag == "jimen") {
Player.x = 0;
}
}
}

コメント

このブログの人気の投稿

3DCADでゲーム用の銃を作っていく ~活動報告190925~

3DCADのFusion360を使って、銃の3Dモデルを作ります。 どうも、kou0128です。 昨日、思ったよりもガチャゲーの制作に時間がかかる事が判明し、VRの制作に戻ります。 まずは、3DCADでモンスターを撃つ銃のモデルを作っていきます。 使うのはFusion360という3DCADソフトです。 作ってる途中の画像じゃなく、いきなり原型が出来てしまってますが・・・ 使い方はを細かく紹介するブログと動画は、また作ります。 さて原型を作りましたが、もう少し銃っぽさを出していきます。 グリップ部分チェッカリングを付けていきます。 実際の拳銃でも滑り止めについていることが多いし、平面な部分を減らしていくことでのっぺり感を減らせるんじゃなかろうかという感じです。 グリップのチェッカリングと、スライドの分割溝を付けることで、一気にのっぺり感が減りました。 ただ、今回作ったモデルはゲーム中にサイト覗きっぱなしなので、サイドのデザインは関係ないという。 やっぱり作るならクオリティにこだわりたいじゃないですか。 今後の練習と思えば、全然苦になりません。 サイドにデカールを貼ってみました。 簡単に絵を張り付ける機能も標準で搭載されているので、3D上でモデルとステッカーのあわせが試せるという使い方が出来ます。 3Dプリンタでモデルを出して、プリンターでシールを印刷すれば実物で再現できそう。 うーん、やっぱり3DCADでモデル作ると3Dプリンタで出してみたいという思いにもなります。 やっぱり買おうかなぁ・・・・ 閑話休題 Windows10搭載のペイント3Dで色を塗ってみました。 これでテクスチャデータが書き出せたら、神ソフトなのですが試してみた感じ、全然上手い事行きません。 やっぱりBlenderで色を付けるしかないですね・・・ そんな訳でBlenderに取り込みます。 BlenderのUV展開で色を付けることできないかなぁ・・・と以前から考えてますが、何故かペイント機能が出ない。 というか、そもそもUV展開された状態が...

SL230~リアブレーキ&シフトペダルの調整~

今回は以前より自分のライディングポジションに合わなかった、 リアブレーキペダル&シフトペダルの位置調整をしていきます。 まずは、リアブレーキの調整からしていきます。 はい、調整後です。 調整方法はいたって簡単です。 この金色のナットの位置調整をして終わりです。 ね?簡単でしょ? 流石に詳しく説明をします。 1. まず、下のねじの山を確認し、金色のナットとステン(?)のナットが近づく方と離れる方を確認します。 2. でペダルを下げたい場合は、近づく方向に回し、上げたい場合は離れる方向に回すだけです。 説明終わり。 リアブレーキペダルの調整は恐ろしく簡単でした。 注意点としては、 1. 電気をONにしてブレーキを踏んだ時、ブレーキーランプが点きっぱなしにならない事に確認する。(点きっぱなしだと、「整備不良」でお巡りさんに捕まるよ!) 2. ブレーキを踏んでいない時に、ブレーキパッドとブレーキディスクが当たってないか確認する。 この二つを確認して、試し乗りして問題なければ終了です。 これで、長距離でも疲れにくくなりましたね。 さて、次はシフトペダルの調整をしていきましょう。 シフトペダルの調整は本来、この 二つのナットの位置を変えて調整しますが、今回は、 元の接続部のとこから変えていきます。 それでは説明を。 1. まず、シリコンスプレーを吹いて、ねじを緩めます。 2. シフトペダルは横方向に遊びが有るので、そのまま取り外し。 3. ここから位置を決めながら、少しづつ角度を変えていきます。(かなり大きく変化するので良い位置を見つけるのは難しいよ) 4. で、位置が決まったらねじを付けて固定です。(締め過ぎ注意、なめたら詰みだよ!) で、あとは試し乗りして気に要らなけりゃ、変えてまた試し乗りという流れですね。 これでシフトペダルの調整は終了です。 自分がした感じだとブレーキペダルは簡単でしたが、シフトペダルは少し面倒かなという印象です。 今回自分がしたときは、...

「このカードを語りたい」第2回 クラヤミノツボ DARK MEMORY CONTAINER【デュエマ】

どうもkou0128改め、kouhei0128です。 「このカードを語りたい」第2回の今回は、なんかダメそうな見た目だなぁと思ってたら本当に禁忌レベルの使われ方になった、 クラヤミノツボ DARK MEMORY CONTAINER このカードについて語って行きたいと思います。 1.性能よりも前にまず見た目が危なそう。 このカードを見て、皆様はどんな印象を持たれましたか? 見た目・名前から「なんかDARK MATERIAL CONPLEXに似てるなぁ」そうは思いませんか? とは言え性能で見ると、あのカード程の高いパワーも持っていなければ、効果も3色5マナの割には強制2ドローと、シールド追加時に墓地から蘇生出来る効果です。 「シールド追加ってコスト高いカードが殆どだし、出した上で2ドローだから、まあそんなに大した事無いだろう」と、そんな風に考えた時期がありました。 2.ちゃんと性能全部が駄目だった このカードが出た王道Wの第2弾時点ではそれほど相性の良いカードは発見されていませんでした。 しかし、王道W第3弾にこのカードが入ってました。 前回語ったこのカード、「アンリミテッド・アヴァラルド 〜地獄帰りの騎士〜」です。 これまでのカードプールでは、墓地にクラヤミノツボを持っていく方法はエマージェンシータイフーンなど軽量なカードが有りましたが、蘇生効果を発動する為のシールド追加手段に乏しかったのが現実でした。 しかし、アンリミテッド・アヴァラルドは3ドロー2捨てして、シールド追加。 つまり3ドローした時点で、手札にクラヤミノツボが2枚存在するなら、2捨てで墓地に置くことでクラヤミノツボをシールド追加時に2体蘇生出来ます。 いや、ダメだよ。 色も全く同じなので、公式も想定済みのコンボかもしれませんが、この2体蘇生から闇王ゼーロを使うループに入るデッキが大暴れしているのは、皆様も承知の事でしょう。 特にクラヤミノツボのツボ自身が出た時に強制2ドローを持っている為、2体蘇生した段階で手札0でも、4ドローでゼーロ+闇3枚が揃ってしまえば闇王ゼーロを代替えコストを払って使うことが可能です。 余りにも闇王ゼーロの為のカードと言わんばかりの性能をしています。 これは運営の想定通りの動きなのでしょうか? この記事を書いてる最中にもハンデスを軸...