- オブジェクトをジャンプさせたい
という悩みを解決します。
結論としてAddForceを使います。他の方法もありますが、今回はAddForceを使った方法ですすめていきます。
スクリプトをアタッチするまでやスクリプトの実装例もお伝えするので、Unity使いはじめの方でも安心できる内容になっています。
スクリプト例だけ知りたい方はスクリプト例のところまで、すすめてください。ゆっくりご覧ください。
レイアウトは【2 by 3】です。見にくい方は【Unity】効率アップ!レイアウト(Layout)を変更してできる5個の開発画面で【2 by 3】に変更してください。
オブジェクトをAddForceを使ってジャンプさせる
オブジェクトの用意
自分はヒューマンピクトグラムさんの画像を使っていきます。自分のジャンプさせたいオブジェクがある方はそれを使ってください。
Projectウィンドウに先ほどの画像データをいれる
【Projectウィンドウに先程のデータをドラッグ&ドロップ】
すでにオブジェクトのデータをプロジェクトウィンドウに入れている方はスルーしてください。
オブジェクトの設置
【Projectウィンドウでさきほどのオブジェクトを選択しSceneビューにドラッグ&ドロップ】
もし名前を変えたい人はUnityでオブジェクトの名前を変更する方法【基本知識】をご覧ください。
スクリプトの作成
【Projectウィンドウ】→【Create】→【C#Script】→【名前をPlayerController】(名前はなんでも良い)
Rigidbody2DコンポーネントをPlayerにつける
【Player選択】→【Inspector】→【Add Component】→【Rigidbody2D】
Rigidbody2Dは物理的機能をつけるようなものだと思ってください。ここでは詳細な機能は省きます。詳しく知りたい人は【Unity】オブジェクトに物理機能をつけるRigidbodyの使い方、設定方法をご覧ください。
スクリプトを開く
【Projectウィンドウ】→【PlayerControllerをダブルクリック】
スクリプト例
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour {
Rigidbody2D rigit2D;
float jumpPower = 700.0f;
// Use this for initialization
void Start () {
this.rigit2D = GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update () {
// ジャンプさせる
if (Input.GetKeyDown(KeyCode.Space))
{
this.rigit2D.AddForce(transform.up * jumpPower);
}
}
}
if (Input.GetKeyDown(KeyCode.Space)) { // 処理 } |
Spaceキー押したら、処理を行う |
this.rigit2D.AddForce(transform.up * jumpPower);
この部分でジャンプするように設定しています。【junmPower】変数の値を変えることで、どのぐらいジャンプするかを変えることができます。
スクリプトをアタッチ
【PlayerControllerスクリプトを動かしたいオブジェクトにドラッグ&ドロップ】
スクリプトをオブジェクトにアタッチ(紐付ける)ことで、はじめてスクリプトの内容を実行することができます。
こんな感じになる
Spaceキーを押すたびにジャンプするようになります。ゲーム実行ボタンは上部の▷この矢印です。実行して、ジャンプすることを確認してみてください。
ちなみにこの記事使うとジャンプ中に横移動もできるようになるよ
この記事を使うと横移動ができるようになります。つまりジャンプのスクリプトと合わせることでジャンプ中でも横移動できるようになります。
スクリプト例
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour {
Rigidbody2D rigit2D;
float jumpPower = 700.0f;
// Use this for initialization
void Start () {
this.rigit2D = GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update () {
// ジャンプさせる
if (Input.GetKeyDown(KeyCode.Space))
{
this.rigit2D.AddForce(transform.up * jumpPower);
}
// Aが押されたときに左に移動
if (Input.GetKey(KeyCode.A))
{
transform.Translate(-0.05f, 0, 0);
}
// Dが押されたときに右に移動
if (Input.GetKey(KeyCode.D))
{
transform.Translate(0.05f, 0, 0);
}
}
}
ゲーム開発の参考にしていただければ嬉しいです。
まとめ
- AddForceはオブジェクトに力を加えることができる
- AddForceをジャンプをさせることができる
AddForceを使って、ジャンプさせようの記事使おう。#unity #unity2d pic.twitter.com/3T5xv8vTly
— さぎのみや (@saginomiya8) October 9, 2018
Unityでゲームを作りはじめたばかりという人は【Unity2D&3Dサンプルゲーム】動画よりわかりやすく記事でゲームを作ろうでゲームを作ってみてください。
以上さぎのみや(@saginomiya8)でした。
コメント