FC2ブログ
10 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.» 12

ハルシオンシステムの気ままBlog

株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

 

【ハルシオンブログ】タイルマップを使ってみた。意外と簡単にできるんすね。 

こんにちは!坂内っす。
もう次の日曜日にはデジゲー2018っすね!
ブースの皆さん頑張って準備してくださいな!

さてさて、本日のUnityのお話はタイルマップについて。
Unity2017.2くらい?から導入されたタイルマップなんですが、今まで触ってもなかったので、ここで触ってみようかなと。

タイルマップとは?
タイル(英: tile)は、建設資材の一つで、壁や床の保護、あるいは装飾用に多数張りつける板状のもの。

地図、マップ

ってことで、ゲームの画面をタイルで並べるように作る機能のようです。

さてさて、アセットストアにもいろいろとタイルマップで使えるマップチップのアセットがあるようです。
今回はこれを使ってみました。



まずはタイルパレットを作成します。
あ、ちなみに使用しているUnityは2018.2.1です。バージョンによって多少コマンドの位置が変わるかも?



Tile Paletteを選択するとウインドウが出てきます。

出てきたウインドウの「Create New Palette」を押して、Nameにパレット名を入力し、「Create」を選択。


そうすると、今付けた名前のパレットプレハブができます。


次に使用するテクスチャを選択し、設定します。

今回はこれを使ってみましょう。


Bricksってファイルです。

Sprite Modeを「Multiple」に変更します。
Pixel Per Unitの数値をタイルのサイズにします。
チップが16x16だった場合は16を入力します。(今回は32x32だったので、32を入力)


そして「Sprite Editor」ボタンを押す!

SpriteEditorの画面で「Slice」ボタンを押し、出てきたウインドウでTypeを「Grid By Size」へ変更。
PixelSizeを32,32に設定し「Slice」ボタンを押す。




テクスチャが32x32で白い線で切られると思います。

これでウインドウの右上にあるxを押してApply。

これで、テクスチャの準備は完了です。

次に、今のBrickファイルをTilePaletteウインドウにドラッグ&ドロップします。



これで完成です。

次にタイルマップを画面に置いてみましょう。

「GameObject」⇒「2D Object」⇒「Tilemap」を選択します。


そうすると、Hierarchyに「Grid」というオブジェクトが作成されます。
このGridを選択すると、Sceneウインドウに白い線が出るようになります。


この状態で、TilePaletteで好きなチップを選択、クリックやドラッグでタイルを配置できます。



Shift+ドラッグ(クリック)で削除できます。

また、"「"ボタン、"」"ボタンを押すことでタイルを回転できます。

さて、このままだとこうなっちゃいます。



そうです。コライダーが付いていないのですり抜けちゃう!

コライダーの付け方は簡単です。

Hierarchyにある「Tilemap」に「TilemapCollider2D」を付けます。



これでキャラがちゃんとぶつかるようになります。

こんな感じ。


簡単にTilemapって使えるんですね!
今度何かにつかってみよう!

ということで、今日はこれであでゅ~ノシ
スポンサーサイト

Category: 開発日記(Unity)

Thread: プログラミング

Janre: コンピュータ

Tag: Unity  ゲーム  2Dゲーム  Sprite  ゲーム開発  タイルマップ 
tb 0 : cm 0   

【Unity】Unity&Orthelloによる2Dゲーム作成⑦ 

はい、こんにちわ坂内でっす。

Unity難しいでっす。
土曜出社してAndroidゲーム【モンスラ】バージョンアップしたでっす。

今回の目玉は必殺技の追加、クリティカルヒット追加、フェアリー追加でしたが、実は軽くなってるんです!

Drawcallが劇的に減ってるんですよ!

Ver1.1まではフルメンバー(村人200人+ユニット199人x6クラス)の場合、Drawcallが200ほど。
重いです!これ重いんですよ!

Ver1.1までは各クラスごとにAtlasを用意し、合計7Atlasを使用していました。
Ver2では少しでも軽くしようと、GUIまわりのAtlasを一つにしたり、ユニットのAtlasをつにまとめたりしたところ、なんとDrawCall30!!!

この劇的変化!! DrawCall 200 ⇒ 30!!

ただし、スマホだとさすがにSpriteの多さが問題か、重いんです!
DrawCallの問題だけじゃあぁないっすね!!
今後軽くする方法を検討してみますが、ちょっとこれ以上はきついかな?
タップ時の攻撃エフェクトを他のAtlasと1つにしてみようという案は考えてますが・・
あと、Unity4.3によって2Dゲームまわりにどのような変化がくるか楽しみですね!!

と、いうことで今後もモンスラよろしくお願いします!

Category: 開発日記(Unity)

Tag: Android  ゲーム  2Dゲーム  Sprite  Unity 
tb 0 : cm 0   

今までとはちょっと違いファンタジー風ゲーム作成はじめました  その弐 

月曜の坂内っす。

先週月曜に話をしていたファンタジーっぽいゲームなんですが、21日リリースします!いや、したいです!
なんとなーく できてきました。
これちょっと面白いんじゃないかなーというか、面白いです!
写真はリリースまでおあずけです!

①簡単操作
②仲間を増やす
③敵を倒してお金を稼ぐ
④装備アイテムも盛りだくさん!(アイテムは全部で50種以上!?)
⑤アチーブは全100個!!!!!!!

どっすか?興味でません?

あれ?開発者ブログじゃない?って声聞こえそうなので1つ。

Unityゲームを開発している時、画面に表示する文字列は専ら「3DText」を使用しています。
この話以前しましたっけ?ただ問題がありまして、3DTextを多量に使うと文字が欠けてしまったり、
上手く表示できなくなってしまいます。
原因はわかりません!
そのため、固定の文字列等は画像にして張り付けたりしてます。

なにか解決方法わかる方ご教授くださいませ!

以上!

Category: その他日記

Tag: Android  Unity  ゲーム  2Dゲーム  ファンタジー 
tb 0 : cm 0   

【Unity】Unity&Orthelloによる2Dゲーム作成③ 

はい、こんにちわ。坂内です。
本日の題は「Unity&Orthelloによる2Dゲーム作成其の3」です。

アニメーションについて、ちょちょっと書いてみます。

Orthelloには、AnimatingSpriteというものがあります。
これ、アニメーション用のSpriteっぽいっす。
オブジェクトとしては、コレ使います。

では順番に説明をば。(間違えていたら指摘プリーズ!

①「Orthello」⇒「Sprite」⇒「Animation」をHierarchyに追加します。
  このAnimationはSpriteのアニメーション自体を管理するもののようです!


②今回はこんな感じの適当な絵を用意しました!

 立ち絵・パンチ・キックの3種類のアニメーションです。(適当でスイマセン
 これをまずは前々回の通りSpriteAtlasに読み込みます。
 SpriteAtlasについては前々回の「Unity&Orthelloによる2Dゲーム作成①」を参照。

③次に、①で追加したAnimationのInspectorのFramesetsをアニメーションの数設定します。
 今回は「立ち」「パンチ」「キック」の3種類のため、FramesetsにSizeに「3」を設定。
 Sizeに3をセットすることにより、その下にElementsが3個追加されます。
 それぞれのElementsのNameにアニメーション名を設定します。今回は「stand」「punch」「kick」に
 してみます。


④各種アニメーションに、どの絵を使うかを指定します。
 ③で作成したElementsのContainerに②で指定したAtlasを指定します。
 それと、スタートフレーム、エンドフレーム(アニメーションのフレームを指定)
 立ちポーズはSpriteAtlasでは、8,9,10,11,12の絵になるので、Start Frameに「8」を、
 End Frameに「12」を指定します。

⑤で、アニメーションの指定はスクリプトで「OT.AnimatingSprite("オブジェクト名").Play("アニメーション名");」とすることで動かすことができます。
using UnityEngine;
using System.Collections;

public class PlayerScript : MonoBehaviour {

void Start () {
OT.AnimatingSprite("Player").PlayLoop("stand");
}

void Update () {

}
}


⑥では、スペースボタンを押すとキックをするようにしてみましょう。

void Update () {
if(Input.GetButtonUp("Jump")){
OT.AnimatingSprite("Player").PlayOnce("kick");
}
}


なんかそれっぽくなりましたね!

これ、キックのアニメのあと、止まってしまうけど、もとのStandアニメーションにするのはどうするんだろうか!
キックのアニメーションが終わったタイミングでうまくスタンドのアニメーションに戻す方法なにかいい方法をお持ちの方教えて下さい!
ってことで、本日のブログは終了です!

Category: 開発日記(Unity)

Thread: 日記

Janre: 日記

Tag: Orthello  Android  ゲーム  2Dゲーム  Unity  Sprite 
tb 0 : cm 0   

【Unity】Unity&Orthelloによる2Dゲーム作成② 

月曜担当の坂内です。暑い日が続いています。
倒れないように水分はこまm(ry

ええと、Orthelloによる2Dゲーム作成第2弾ということで、
Spriteの移動について簡単に書いていきたいと思います。

Unityにおける、オブジェクトの基本的な移動は以下になります。

◆オブジェクトに必ずついている、Transformコンポーネントのposition
 の値を変更する。
 
 ●gameObject.transform.Translate(new Vector3(1,1,0));
  Translateという命令で引数のVector3方面への移動。
  上記の例だと、x方向に1、y方向に1進めという意味。
 ●gameObject.transform.position = new Vector3(100,0,10);
  transformpositionにVector3の位置を代入。
  gameObjectの場所をVector3の位置に移動。
 などの方法で移動させます。
 
◆オブジェクトについている、Rigidbodyコンポーネントに力を加える。
 ●gameObject.rigidbody.AddForce(new Vector3(10,5,1));
  rigidbodyにVector3の力を加える。
 他
 
となります。

次に、iTweenを使った、移動方法をば。

iTweenの基本的な使い方は以下になります。

iTween.MoveTo(オブジェクト,iTween.Hash(ほにゃらら));
iTween.MoveFrom(オブジェクト,iTween.Hash(ほにゃらら));
◆iTween.MoveAdd(オブジェクト,iTween.Hash(ほにゃらら));
など。

ほにゃららのところには直接iTween.Hash()を書く方法と、
HashTableを作成して書く方法があります。

(testという名のオブジェクトを移動する場合)

void Update () {
// スペースキーをおしたよ.
if(Input.GetButtonUp("Jump")){
Hashtable hash = new Hashtable ();
hash.Add("x",50f);           //①
hash.Add("time",1f);          //②
hash.Add("easetype",iTween.EaseType.easeInOutBack); //③
iTween.MoveAdd(GameObject.Find("test"),hash); //④
}
}




void Update () {
// スペースキーをおしたよ.
if(Input.GetButtonUp("Jump")){
iTween.MoveAdd(GameObject.Find("test")
      ,iTween.Hash("x",50f,"time",1f,"easetype"
      ,iTween.EaseType.easeInOutBack));
}
}



①移動する座標をx座標50として指定。
②移動する時間を1秒として指定。
③移動する際の動き方をeaseInOutBackとして指定。
 他にもいろいろな動き方があります。
④MoveAddにて、上記の動きを追加。
 MoveAdd Hashの動きを追加。
 MoveTo Hashの場所へ移動。
 MoveFrom Hashの場所から今の場所へ移動。(?)
という感じで使用できます。

この際、注意として、Orthelloを使用していると、transformpositionとは別に、
OTSpriteのpositionが存在しています。
移動した際には、iTweenまたはtransformでの移動後に、以下のコードを追加しないと
うまく動かない場合があります!(動く時とうまく動かない時の違いがわからない・・・)

OT.Sprite("オブジェクト名").position = オブジェクト.transform.position;

以上でUnityにおけるオブジェクトの動き方メモ終了!!

さぁ、これでゲーム作成に1歩近づきましたね!

(使い方間違えている等の指摘ありましたらお願いします!)

Category: 開発日記(Unity)

Thread: 日記

Janre: 日記

Tag: iTween  Orthello  Android  ゲーム  2Dゲーム  Unity  transform  position  Rigidbody 
tb 0 : cm 0