サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
おみそ汁
qiita.com/2dgames_jp
この記事は Godot Engine について個人的に残しておきたい情報のメモ書きとなります 剛体の種類 Area2D: 衝突検出のみ KinematicBody2D: 衝突検出と応答を行う。直接 positionを変更せずに、move_and_slide() / move_and_collide() を使って移動処理を行う RigidBody2D: 衝突検出と応答が自動で行われる。移動させる場合は add_force() などを現実世界に近い剛体 StaticBody2D: 移動しない床や壁など。衝突検出と応答が自動で行われる マウスの座標とクリック判定 get_viewport() を使用する # マウスのX座標 var mx = get_viewport().get_mouse_position().x # マウスのY座標 var my = get_viewport().get_mo
概要 この記事は2Dゲームを作りながら Godot Engineの基本を学ぶためのチュートリアルとなります。 作るゲームとしては以下のような簡単なクリックゲームとなります。 プロジェクトの作成 Godotを起動すると、最初に以下のような画面が表示されます。 ここから「新規プロジェクト」を選択して、プロジェクトを新規作成します。 すると「新規プロジェクトを作成」の画面が表示されます。 まずは「参照」をクリックして、プロジェクトを配置する場所を指定します。 場所を指定するダイアログが表示されるので、Desktopなどに移動します。 Windows環境の場合は初期値が マイドキュメント あたりになっているので「↑」をクリックすると Desktop が見つかります。ただ、わかりやすい場所であればどこでも構いません。 指定ができたら「現在のフォルダを選択」で場所を決定します。 場所を指定したものの「
この記事は YoYoGamesの公式ブログ 「USEFUL RESOURCES WHEN LEARNING TO CODE WITH GML」 を翻訳したものとなります。 (※意味が取れなかったところは意訳を入れているので、正確な意味が知りたい場合は原文を読むことをおすすめします) この短い技術ブログは、GameMaker Studio 2で Drag and Drop (アイコン) でのゲームの作り方を理解していて、次のステップとして、Game Maker Language (GML) に進みたいと考えている人、またはプログラミング経験のなくで何をすればいいのかわからない人を対象とした記事です。 ここでは具体的なコード例は示しませんが、代わりにどこから始めればよいのか、いくつかの優れた方法を紹介するとともに、優れたGameMakerユーザーによって GameMaker Community
久しぶりにGameMaker:Studio2を使ってみて気がついたことをまとめていきます。 ここでは描画周りとか、ホットリロード、SyncGroup、Spineの制御について書いていきます。 加算ブレンドで描画する方法 ブレンドモードを設定する関数が draw_set_blend_mode() から gpu_set_blendmode() に変わったようです。 なので、例えば Drawイベント で以下の記述にすると加算ブレンドでスプライトを描画できます。 gpu_set_blendmode(bm_add); // 加算ブレンドに変更 draw_self(); // スプライト描画 gpu_set_blendmode(bm_normal); // 通常のブレンドモードに戻す ちなみによくやりがちなミスとして、補完機能で入力すると gpu_set_blendenable() (ブレンドモードの
5の「振り返り」は以下の項目を検討しておくと良いです。 Idea:アイデア。コンセプト。テーマ。元ネタ What went right:やってみて良かったこと。うまくいったところ。成功したところ。次回に生かせそうなこと What went wrong:ダメだったところ。うまく機能しなかったところ。問題点。改善すべき点 What I learned:学んだこと。効果的なゲームデザインの方法やツールの使い方、獲得したテクニックなど ちなみに最初にリンクを貼った、作ったゲームの各ページの下の方には、振り返りや作成にかかった時間などを記載しています(以下はノンフィールドRPG「OneWay RPG」を作った時の振り返り) Game A Weekで得たもの ということで「Game A Week」を行った結果、私が得たものです。 ゲームを作りながら技術検証できる ゲームを完成させたときの達成感を繰り返
はじめに この記事は、Unity初心者が2Dゲームの作成に慣れることを目的としたチュートリアルとなります。前回は敵を出現させてクリックすると消えるところまでを作りました。 【Unity2D】Unityで2Dミニゲームを作るチュートリアル(第1回) 【Unity2D】Unityで2Dミニゲームを作るチュートリアル(第2回) ←前回 【Unity2D】Unityで2Dミニゲームを作るチュートリアル(第3回) ←今ココ 今回で演出とシーンの遷移を作り、ミニゲームを完成させたいと思います。 パーティクルの追加 たこ焼きが消えるときに演出がないので違和感があります。そこでパーティクルを追加します。パーティクルとは「粒子」の意味で、これをたくさん発生させて演出とする仕組みです。Unityには「Shuriken」というパーティクルシステムが用意されていますが、ここではそれを使わずに独自のパーティクル生成
はじめに uGUIのSliderを使って、素早くHPバーを作る方法を紹介します。 手順 以下の手順で作っていきます。 Sliderを作成する つまみを削除する バーの色を変える バーのサイズを調整する スクリプトからバーの値を変更する 1. Sliderを作成する メインメニューから GameObject > UI > Slider を選び、Sliderオブジェクトを作成します。すると以下のゲームオブジェクトが追加されます。 Canvas: UIを配置する領域 Slider: スライダー Background: 背景 Fill Area: 前景の領域 Fill: 前景の描画情報 Handle Slide Area: スライダーのつまみの領域 Handle: スライダーのつまみの情報 EventSystem: UIイベントシステム 実行して、丸いつまみをドラッグすると左右に移動できます。そし
はじめに uGUIで最も使用頻度が高いと思われるButtonの基本的な使い方を紹介します Buttonの作り方 まずはButtonの作り方からです。 メインメニューから GameObject > UI > Button を選択します。 Buttonを選ぶと、Hierarchyビューに、Canvas / Button / Text / EventSystem の4つのGameObjectが追加されます。 以下、簡単な説明です。 Canvas: UIを乗せる領域。これがないとUIは作れない Button: ボタン。ここにボタンの挙動を設定する Text: ボタンの上に乗るテキスト EventSystem: UIイベントスクリプト管理。イベントを拡張したい場合はここに手を入れる 今回は、Buttonのクリック判定ができればいいので、EventSystemはそのまま使います。 ボタンの見た目の挙動
Unityはコンポーネント指向という設計で作られています。ゲームオブジェクトに、必要な機能をコンポーネントとして追加することで機能拡張できるようになっています。 なおスクリプト上でコンポーネントを取得するには、GetComponent関数を使います。
自作のローグライクが完成したので、メモ代わりに開発手順をまとめてみました。 開発するにあたり、「ローグライクをつくる15のステップ」をかなり参考にしたので、それがベースとなっています。 Step 1. Decide to write a game (がんばるぞ) この段階では 自分が作りたいローグライク をイメージします。 ローグライクをひたすら遊ぶ トルネコやシレンは、和製ローグライクとしてかなり完成度が高い ので、遊んでなかったら一度遊んでおいた方がよいかも 最新作を手元に置いておくと、悩んだとき参考になる とくにUIのレイアウトとか、表示する項目や、操作感、敵に殴られたときにそっちを振り向く、とか 海外のローグライクは自由な発想なものが多いので、Steamで Roguelike タグがついているゲームをひたすら遊んでみるのもよいかもしれない 様々なローグを遊ぶと、自分の遊びたいローグ
posted articles:Godot:34%Unity:28%Unity2D:24%GameMakerStudio2:24%Haxe:6%
はじめに この記事は、Unity初心者が2Dゲームの作成に慣れることを目的としたチュートリアルとなります。前回は背景の表示までを作りました。 【Unity2D】Unityで2Dミニゲームを作るチュートリアル(第1回) ←前回 【Unity2D】Unityで2Dミニゲームを作るチュートリアル(第2回) ←今ココ 【Unity2D】Unityで2Dミニゲームを作るチュートリアル(第3回) 今回は敵を表示して動かすところまでを作っていきます。 敵の生成 敵(たこ焼き)を作成します。Projectビューの「Assets/Sprites」フォルダにある tako スプライトを、Sceneビューにドラッグ&ドロップします。 すると「tako」ゲームオブジェクトが作成されます。Hierarchyビューの「takou」オブジェクトを選択して、もう一度クリックすると名前が変更できます。 そうしたら名前を「E
Unityでタワーディフェンスを作りました。実行サンプルとソースコードは以下のURLから取得できます。 https://2dgames.jp/unity_tower_defense/ ※Unityのバージョンは「5.0.1」なので、それ以降のバージョンでないとプロジェクトは開けません 採用したルール 最近ではいろんなジャンルが混ざり合ったタワーディフェンスが多いですが、今回作ったのは古典的(と思われる)タワーディフェンスのルールを採用しました。 砲台を好きな位置に配置できる ただし敵の経路には配置できない Wave単位で敵が出現する 敵は決まった経路で移動する 敵が拠点にたどりついたらダメージを受ける 3回ダメージを受けたらゲームオーバー 配置した砲台をアップグレードできる タワーディフェンスにおける砲台(タワー)の配置方法は、大きく分けて自由配置型と固定型(敵の移動ルートが決まっている)
やりたかったこと こんな感じで並んでいるローグライク用のモンスター画像を ↓↓↓ こういう並びに変えたかったのですが…… これだけのキャラクターの画像をすべて手作業で処理するのはかなり大変……。 なので、スクリプトで自動化できないかと調べたところ、ImageMagickを使うのがよさげでした。 ImageMagickのインストール Mac環境なのでMacPorts経由でインストールしました。 macにImageMagickをインストール! Windows環境なら、こちらを参考にインストーラーを使うと簡単にインストールできそう。 ImageMagick インストール やり方 手順 以下の手順で画像を加工することにしました 画像を切り抜いて、1つのキャラ画像に分ける 切り抜いたキャラ画像を連結する 画像の切り抜き 画像の切り抜きには -crop オプションを使います。
using UnityEngine; using System.Collections; /// キャラクター基底クラス. /// SpriteRendererが必要. [RequireComponent (typeof(SpriteRenderer))] public class Token : MonoBehaviour { /// プレハブ取得. /// プレハブは必ず"Resources/Prefabs/"に配置すること. public static GameObject GetPrefab (GameObject prefab, string name) { return prefab ?? (prefab = Resources.Load ("Prefabs/" + name) as GameObject); } /// インスタンスを生成してスクリプトを返す. public
// p2からp1への角度を求める // @param p1 自分の座標 // @param p2 相手の座標 // @return 2点の角度(Degree) public float GetAim(Vector2 p1, Vector2 p2) { float dx = p2.x - p1.x; float dy = p2.y - p1.y; float rad = Mathf.Atan2(dy, dx); return rad * Mathf.Rad2Deg; } これで狙い撃ち弾を撃てるようになりました。 Vector2.Angleを使う (2014/7/27 追記) コメント欄で指摘頂いたのですが、Vector2.Angleという便利な関数があるので、それを使えば三角関数は不要になりそうです。 Vector2.Angleの起点は、(0.0)です http://d.hatena.n
はじめに この記事は、Unity初心者が2Dゲームの作成に慣れることを目的としたチュートリアルとなります。 対象読者 対象読者は以下のとおりです。 Unityを使ってゲームを作ろうとしたけれども、よくわからずに放置している Unityで2Dのゲームを作りたい プログラムの知識は多少ある C#を知っていると良い 知らなくてもC++やJavaの知識があればOK ゲームは作ったことがなくてもOK スクリプト言語にC#を使用するので、変数や関数やクラスについての知識が必要となります。できるだけわかりやすく説明したつもりですが、プログラム言語の知識があったほうが読み進めやすいと思います。 なお、開発環境はWindowsを想定しています。 目次 【Unity2D】Unityで2Dミニゲームを作るチュートリアル(第1回)※今のページ 【Unity2D】Unityで2Dミニゲームを作るチュートリアル(第2
はじめに 前回の「穴掘り法」は、どちらかというと迷路の生成アルゴリズムだったのですが、今回は「不思議のダンジョン」のような部屋が存在するダンジョンを自動生成するアルゴリズムの実装方法を紹介します。 実装サンプルはこちらで確認できます。 http://2dgames.jp/unity/dggenerator/ 「もう1回」ボタンを押すごとに、ダンジョンが自動生成されます。こちらのページからUnity2Dで実装したプロジェクトがダウンロードできます。なおソースコードは自由に使って頂いて問題ありません。 実装方法 アルゴリズムのフロー アルゴリズムのフローとしては以下のようになります。 1. 初期化 (2次元配列作成・区画リスト作成) 2. すべてを壁にする 3. マップサイズで最初の区画を作る 4. 区画を分割していく 5. 区画内に部屋を作る 6. 部屋同士をつなげる通路を作る 図にすると以
はじめに Unityでサウンドを再生する場合、サウンドリソースをゲームオブジェクトにアタッチする方法が一般的なのかもしれません。ですが毎回オブジェクトにアタッチするのは面倒です。なのでサウンド管理クラスを作ってみました。実装方法は「ゲームつくろー!さんの『Unity編 > サウンド編』ところに書かれている内容」をかなり参考にしていますが、チャンネル指定の再生など少しだけアレンジをしています。 使い方 まずは使い方です。手順は以下のとおりとなります。 サウンドリソースを登録 ロード処理を記述 再生処理を記述 1. サウンドリソースを登録 サウンドファイルをProjectビューの「Assets/Resources/Sound」フォルダにドラッグ&ドロップします。 このモジュールはこのフォルダからサウンドリソースを読み込むようにしています。 あとInspectorビューのサウンド設定から「3D
Unity2Dで実装したサンプルはこちらです。 http://2dgames.jp/unity/anahori/ プロジェクトファイルもついています。 メリットとデメリット メリット 穴掘り法によるダンジョンのメリットは以下のとおりです 実装が簡単 通路のどこに入り口と出口を置いても必ずつながる 袋小路が作られることがない 穴掘り法を使うメリットとしては「アルゴリズムが簡単」です。実装のためのプログラムコードとしては100行もかかりませんので、だいたい1時間もあれば実装できます。 また、通路がすべてつながっているので、通路内であれば入り口と出口をどこに置いても必ずつながります。 デメリット サンプルを確認するとわかるのですが、穴掘り法は「不思議なダンジョンシリーズ」のように、大きな空間を持った「部屋」を作ることができません。そのため多くの敵に囲まれたりする、といったゲーム性を持つダンジョン
A*(A-star)アルゴリズムとは A*アルゴリズムとは、探索アルゴリズムの一種です。経路をノードで表現して、スタートノード(開始地点)からゴールノード(目標地点)までの経路を計算し、この経路が最短であることを保証するアルゴリズムとなります。そしてスタートからゴールまでの間に障害物があってもちゃんと迂回してくれます。 サンプルはこちらのページにあります。 http://2dgames.jp/unity/astar/ ページを開くとランダムでスタートとゴールが決まり、キャラクターがゴールへ向かって動きます。ゴールにたどりつくと、「もう1回」ボタンが表示されるので、それを押すと再びスタートとゴールがランダムで配置されます。 なお、Unity(C#)で実装したプロジェクトつきです。こちらのソースコードは自由につかってもらって構いません。ただし画像の2次使用は禁止します。 A*の実装 フィールド
今回はインベーダーゲームもどきを作ってみます。 公式のデモはこちらです。 http://haxeflixel.com/demos/FlxInvaders/ ソースコードはこちらですね。 https://github.com/HaxeFlixel/flixel-demos/tree/master/Arcade%20Classics/FlxInvaders/source 今回は画像ファイルを使用するので、こちらからダウンロードします。 https://github.com/HaxeFlixel/flixel-demos/tree/master/Arcade%20Classics/FlxInvaders/assets alien.png(敵画像) ship.png(自機画像) 必要なのは上記2つの画像となります(白い画像なのでプレビューしても何もないように見えますが、プログラムで描画してみると絵
using UnityEngine; using System.Collections; public class Cube : MonoBehaviour { // Use this for initialization void Start () { MeshFilter mf = GetComponent<MeshFilter>(); mf.mesh.SetIndices(mf.mesh.GetIndices(0),MeshTopology.LineStrip,0); } } MeshTopology.Lines だと微妙だったので、MeshTopology.LineStrip にしたところ、 こんな感じでワイヤーフレーム表示ができました。 影を無効にする ただ、このままだと影がついてしまっているので、これを無効にします。 Mesh Renderer の Material を Def
スクリプトにアタッチせずに、スクリプトから直接Prefabを指定してインスタンスを生成する方法の紹介をします。 まずProjectビューに「Resources」フォルダを作って、そのフォルダの下にプレハブを配置します。図ではさらに「Prefabs」フォルダを作ってその下に配置していますが、これは無くても問題ありません。 これにより、Resources.Load()を使用することで、スクリプトからプレハブを取得することができます。 // プレハブを取得 GameObject prefab = (GameObject)Resources.Load ("Prefabs/Shot"); // プレハブからインスタンスを生成 Instantiate (prefab, position, Quaternion.identity); 今回は、Prefabsというフォルダの下に配置したので、指定する文字列
こんな感じのイケてない画像を加算合成する方法を紹介したいと思います。 Spriteを作成した直後はデフォルトのシェーダがアタッチされているためこのような描画となっています。 なので、これを加算合成用のものに差し替えます。 Projectビューを右クリックして、「Create > Meterial」を選択し、Materialを新規作成します。作成したらそのMaterialを選択し、InspectorからShaderを「FX/Flare」に変更します。 そうしたら適用したいSpriteのInspectorのSprite Rendererから先ほど作成したMaterialを選択してアタッチします。 これでそのSpriteは加算合成で描画されるようになります。 追記 FX/Flareだと、透過値(アルファ値)が変更できないので、「Particles/Additive」または「Particles/A
こんな風にスライスされたスプライト(enemy_0〜enemy_8)を動的に変更する方法を紹介します。 ■まずはSpriteの取得 Spriteを名前指定で取得するには以下のように記述します。 // スプライトの取得 // @param fileName ファイル名 // @param spriteName スプライト名 public Sprite GetSprite(string fileName, string spriteName) { Sprite[] sprites = Resources.LoadAll<Sprite>(fileName); return System.Array.Find<Sprite>(sprites, (sprite) => sprite.name.Equals(spriteName)); } この関数には第1引数にファイル名を指定し、第2引数にスプライト
Instantiate で生成した GameObjectにアタッチしている Script に引数を渡す方法を紹介したいと思います。 例えば、自機から発射されるShotプレハブにShot.csのScriptをアタッチし、 Shot.csを以下のように定義しているとします。 public class Shot : MonoBehaviour { // 移動速度を設定 // @param direction 角度 // @param speed 速さ public void Create(float direction, float speed) { Vector2 v; v.x = Mathf.Cos (Mathf.Deg2Rad * direction) * speed; v.y = Mathf.Sin (Mathf.Deg2Rad * direction) * speed; rigidbo
まとめていて、ゲームエンジン(ライブラリ含む)にこれだけの種類があったことに驚きました。 Unreal Engine や CryENGINEなどのガチな3Dエンジンから、Construct2やGameSaladなどプログラム不要なゲーム作成ツールまでランクインしていて面白いですね。 最近になってようやく私もマルチプラットフォーム対応のエンジン(GameMaker:Studio)を使うようになったのですが、もうマルチプラットフォームが当たり前というか、……競争が激しすぎです。そうなると、この先生きのこるエンジンがどれになるのか非常に気になります。 ちなみに私が今使っているのは、このリストには書いていないですが、45位にあった「Haxe」という言語の「HaxeFlixel」というクロスプラットフォームなゲームライブラリを使用しています。 そういえば、日本だとモバイル向けなマルチのゲーム開発環境
Spineとは Spineとは2Dアニメーションを作成するためのツールです。ボーンを入れることで人体のような複雑な動きをさせることも可能で、アクションゲーム向きな印象です。 公式サイト : Spine ゲーム用 2D アニメーション ソフトウェア 対応するゲームエンジンの多さが圧巻で、Cocos2D / Unityはもちろんのことマイナーな環境でも動作するのが魅力ではないかと思います。 ただ日本語の情報が少なく、導入の時点でつまづく人も多いような気がしました。 ということで、今回は基本操作を理解するために、簡単な拡大アニメの作り方を紹介したいと思います。(ボーンの使い方は説明しません) 画面レイアウトの説明 重要な機能に絞って、簡単に画面レイアウトを説明します メニュー : ここをクリックするとプロジェクトの保存やエクスポートができます モード切り替え : 「SETUP」と「ANIMATI
次のページ
このページを最初にブックマークしてみませんか?
『@2dgames_jpのマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く