02 «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.31.» 04

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

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

 

【ハルシオンブログ】ポケガ2の中国版が出ましたよおおおおお! 

こんにちは。
大坂です。

春ですね!
眠いですね!(ぇ

3月25日に
ポケガ2の中国語版がリリースされました!!
\( 'ω')/ウオオオオオアアアーーーッ!

Android:
http://www.pujia8.com/library/10130/
https://www.taptap.com/app/65750


iOS:
https://itunes.apple.com/cn/app/id1355600137

中国語で見てみたい人は是非(いるのか?
中国人の知り合いの方に是非!!

リリースして間もないですがとりあえず現状見えているのダウンロード推移はこんな感じみたいです。
Android:

合計は今日のデータも入れると「5,773」ほど。

iOS:

合計「1,833」ほど。
日本語版と変わらずAndroidの方が多いですね。

TAPTAPさんではiOSのランキングの方に載ってたりするんですけどねー。
8位まで入ってたみたいです。

さっき見たら15位下がってましたけど…orz

AppAnnieで確認してみたら中国のAppStoreのシミュレーションで84位みたいです。

もうちょっと上に行ってもらいたいところですね…

中国は人口も多いのしもっとダウロード数増えて!
お願いします!!


広告収益はiOSのAdmob、Adfurikunはそれなりの数字が出てますね。
ユーザが多くなれば稼げそうな気はします。
AndroidはYomobという中国のアド会社を使ってますが、昨日の数字が上がってきたのでこのまま上がってくれるといいなぁぁぁ!


それではこんなところで。
またですノシ
スポンサーサイト

Category: Androidアプリ紹介

tb 0 : cm 0   

【ハルシオンブログ】オブジェクトがオブジェクトに当たった時に消すようにしたいよ!って時にこうやってます。 

こんにちは!坂内っす。

今日は「オブジェクトが他のオブジェクトにあたったら消す」方法。

え?そうです。基本ですね。

例えば、弾が飛んでいき、壁にあたったら消えるようにします。

弾に以下のスクリプトを付けます

[Bullet.cs]
using UnityEngine;

public class Bullet : MonoBehaviour {

Rigidbody2D myRigid;
float SPEED = 7f;

private void Awake() {
myRigid = GetComponent<Rigidbody2D>();
}

void FixedUpdate() {
BulletMovement();
}

void BulletMovement() {
myRigid.velocity = new Vector2(SPEED, myRigid.velocity.y);
}

private void OnCollisionEnter2D(Collision2D collision) {
Destroy(gameObject);
}

}


OnCollisionEnter2Dが「何か他のオブジェクトに衝突したとき」のメソッドです。


こんな感じで、当たるとBulletオブジェクトが消えます。

このタイミングでエフェクト(パーティクルを出してみましょう)

こんなエフェクトを用意しました。


これを弾が壁にぶつかった時にだすようにBullet.csを変更します。
[Bullet.cs]

private void OnCollisionEnter2D(Collision2D collision) {
foreach(ContactPoint2D point in collision.contacts) {
GameObject effect = Instantiate(brokenParticlePref);
effect.transform.position = point.point;
}
Destroy(gameObject);
}

変えたのはOnCollisionEnter2Dです。

foreach(ContactPoint2D point in collision.contacts)
で、当たった場所の座標が取れます。

これでこんな感じになると思います。



なかなかうまく当たりませんが(笑)

当たった場所からエフェクトが出てる感じになりますね。

というわけで、基本に戻ってゲームで使いそうなものを挙げてみました。

では、あでゅ~ノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【ハルシオンブログ】Xcode8を入れなおしたら起動しなくなったって話。 

こんにちは。
大坂です。

昨日は3月も後半だというのに関東で雪が降って寒かったですね…。

さて今週もネタはないのでMacネタです。
先週の記事の対応でよくわからずにXcode8を色々いじりすぎておかしくなったので、
一回丸ごと消して再度入れたら起動しなくなったお話。

先週同様に古いXcodeをここからダウンロードして、解凍して起動すると。


検証してますね。
まぁこれは毎回のことなので気にせず他のことをして待って、しばらくしたらポップアップが消えてXcodeが起動していない…。
あれ?と思ってXcodeをクリックしても何も反応しない…。
Macが重いからおかしくなったかなーと思って一旦再起動して、再度Xcodeを開いてみたらまた検証中に…orz
まぁいいかと思ってまた放置してしばらくしたら同じことに。
一回セーフモードで立ち上げたり、再ダウンロードしたりいろいろやっても起動しない…orz

起動しない理由はよくわかりませんでしたが、
調べてたら検証させなくするようにできるらしいので、それを試したらできたってだけの話です。
Xcodeの解凍先に移動してこんなコマンドを実行するだけ。

xattr -d com.apple.quarantine Xcode.app

com.apple.quarantine拡張属性を削除する感じですね。
Gatekeeperによる検証で、アプリが確実に安全で信頼できる場合に実行してもいいんじゃね?ってことですので、
実施する場合は自己責任でお願いします。
XcodeはAppleから落としてるから平気だと思いますが。

てなことをしていてまた時間を無駄に使ったのでメモとして残しておきます。
ではまたノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【ハルシオンブログ】DoTweenを使ってランダムぶれて飛んでいく弾を作ってみよう! 

はーい 坂内でーす!

みなさんお元気お過ごしですか?

DoTweenでこんな感じで動かす方法の紹介。


まずは、ボタンを押すと弾が出るようにします。

[BulletManager.cs]
using UnityEngine;

public class BulletManager : MonoBehaviour {

public GameObject bulletPref;

public void OnClickShoot() {
Instantiate(bulletPref);
}

}


そして、弾のオブジェクトに次のスクリプトを付けます。

[Bullet.vs]
using UnityEngine;
using DG.Tweening;

public class Bullet : MonoBehaviour {

void Start() {
transform.DOMoveY(5.2f,1f);
}

private void Update() {
if(transform.localPosition.y >= 5.2f) {
Destroy(gameObject);
}
}
}


これで、ボタンを押すと弾が真っすぐ上に飛ぶようになります。

ここまでが基本。

次に、弾が横にぶれるようにします。

ぶれ幅は次のコードの BLUE_WIDTHになります。

[Bullet.cs]
using UnityEngine;
using DG.Tweening;

public class Bullet : MonoBehaviour {

float[] BLUR_WIDTH = {-1f, 1f};

void Start() {
Vector3[] path = {
new Vector3(transform.localPosition.x + Random.Range(BLUR_WIDTH[0],BLUR_WIDTH[1]),
Random.Range(BLUR_WIDTH[0],BLUR_WIDTH[1],0f),
new Vector3(0,5.2f,0f)
};
transform.DOLocalPath(path, 1f, PathType.CatmullRom).SetEase(Ease.Linear);
}

private void Update() {
if(transform.localPosition.y >= 5.2f) {
Destroy(gameObject);
}
}
}


DoTweenのDOLocalPathを使ってパスにするのですが、Y座標を-1~+1のランダム、X座標を-1~+1のランダムにしているのでこういう動きになります。

Sceneの方を見るとなんとなくわかるかな…



というわけで、パスの通り道をランダムで作るとこんな感じの動きの物が作れます。

では、あでゅ~ノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【ハルシオンブログ】iOSのビルドで久々にかなり嵌りました…orz 

こんにちは。
大坂です。

花粉の飛散量が非常に多い今日この頃らしいですが、皆さんどうでしょうか?
出かけないからなのか僕はあんまりひどくありません。

さてはて、先週1週間はポケガ2の中国語版のiOS対応をしていて久々に盛大に嵌ったのでメモしときます。

なんかXcodeのビルドでこんなのが出た。
ld: framework not found IOSurface for architecture arm7

まぁ色々調べた結果Xcode9で使用できるFrameworkらしいですね。
前にもちらっと言いましたが、ハルシオンMacは古すぎてXcode9のインストールができません…。

どれでそのFrameworkを使っているのかわかればそれを外せばよかったんでしょうけどいろいろ消してみても出たりして、
なかなか解決できずに迷走し始めて、かなり時間がかかったって話です。

結局解決策としては、以下からXcode9をダウンロードして解凍して、
IOSurface.frameworkをXcode8に移してあげるという強引な方法。
https://developer.apple.com/download/more/




これをダウンロードして解凍。
解凍だけなのでインストールできなくてもOKですね!

まぁこんな感じで使えないマークはつきますが…。


でこいつを右クリックして「パッケージの内容を表示」を選択。
結構深いですけど以下のパスに行くとFrameworkがあるのでそこからIOSurface.frameworkをコピーして
Xcode8の同じところに入れてあげればXcode8でもIOSurface.frameworkが使えるようになるのでこれを使えば解決です。

パス:「/Downloads/Xcode9.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks」
Xcode8のパスはXcode8を右クリックして同じところに行ってくださいまし。

色々調べて遠回りしながらやったとはいえ、これ解決するだけでかなり時間がかかりましたorz
ではまたですノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【ハルシオンブログ】以前使ってた仮想ジョイスティックのアセットがなくなった!!今度はこのアセットで簡単にジョイスティックをつくったよ! 

こんにちは。坂内っす。

さて花粉もいい感じに盛り上がってきました。
みなさん花粉に負けないで生きてください。

Unityのお話。

以前仮想コントローラとして、「CN Controls」というアセットを使用していましたが、なんと今使えなくなっています!
というか、AssetStoreからなくなっていました!

ということで、違うコントローラの紹介。

Touch Controls Kit - Lite
ということで、無料版の方ですね。



こちらの簡単な使い方を紹介します。

【仮想ジョイスティック】
①ジョイスティックを用意する。
 GameObject>UI>Touch Controls Kit>Joystick
 
 
②ジョイスティックの範囲を設定
 
 Joystick0(ベースの名前)の範囲を変えるとジョイスティックの範囲が変わります。
 画面全部にすると、どこをタップしてもジョイスティックが出る感じです。
 
③ジョイスティックを動かしたことを検知
 とりあえずこんなC#のスクリプトを作成し、Canvasにでもつけてやりましょう。
 [ControlKitManager.cs]
using UnityEngine;
using TouchControlsKit;

public class ControlKitManager : MonoBehaviour {
void Update () {
Vector2 move = TCKInput.GetAxis("Joystick0");
Debug.Log(move);
}
}

これだけ!
GetAxisの中の"Joystick0"は①で用意したJoystickの名前です。
①のJoystick0を名前変えた場合は、GetAxisの中の名前も同じにしてください。


【ボタン】
①ボタンを用意する。
 GameObject>UI>Touch Controls Kit>Button

②ボタンが押されたことを検知
 [ControlKitManager.cs]
using UnityEngine;
using TouchControlsKit;

public class ControlKitManager : MonoBehaviour {
void Update () {
Vector2 move = TCKInput.GetAxis("Joystick0");
if(TCKInput.GetAction("Button0", EActionEvent.Down)) {
Debug.Log("おされたよ");
}
}
}

 TCKInput.GetActionでボタンが押されたことを検知します。
 こちらのコードの例だとEActionEventがDownになっていますが、Click、Down、Press、Upが選択できます。


ということで、ジョイスティックとボタンを簡単に配置する方法でした。

それでは、Joystickについてもう少し詳しく紹介していきましょう。


●UpdateMode
 どのUpdateで検知するか。
 Update、LateUpdate、FixedUpdateのどこで検知するかを選択できるようです。
 (どのUpdateにおいても普通に検出するので、いまいち選択する意味が分からないっす)

●Enable
 Activeのチェックを外すとジョイスティックに触れなくなります。
 Visibleのチェックを外すと消えます。
 
●Identifer
 Joystickのオブジェクトの名前が入ります。
 
●Mode
 Dynamicを選択すると、ジョイスティックの範囲内ではじめにタップした場所をベースに動きます。
  俗にいうプニコンみたいな動きになります。
 Staticを選択すると、ジョイスティックのベースは変わらずに動かすことができます。
 
●Sensitivity(1~10)
 感度?のようだけど…変えてもいまいち違いが分からない。
 
●Borde Size(1~9)
 ジョイスティックの動く範囲。
 
●Smooth Return(1~20)
 動かしたジョイスティックを離した際に、元の場所に戻る速度。
 1だとゆ~~っくり戻る。
 20だと即座に戻る。
 
●Touch Zone
 ジョイスティックの触れる範囲の枠の色
 


ジョイスティックだけでも色々さわれますね!

こちらのアセットですが、Proという有料版もあります。

有料版では、ジョイスティック、ボタン、タッチパッドの他にもハンドル、DPad(?)等が使えるようです。
簡単にジョイスティックが導入できるので、是非お試しあれ。



では、あでゅ~ノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【ハルシオンブログ】プロジェクトのUnityのバージョンを知りたかった時の話。 

こんにちは。
大坂です。

一昨日から腹痛が収まりませんorz
夜中も痛いので大変です。。
悪いものを食べた記憶はないんですけどね。

さて、木曜なのを忘れてて、Macで嵌ってて時間もないので超短いです。
昔作ってたゲームでUnityのバージョンいくつで開発してたっけなーと思ったプロジェクトのUnityのバージョンを知りたいって時。

あるのかないのかはわかりませんが・・・。
複数Unityを入れてて新しいバージョンで開きたくないときは先に調べればいいって話ですね。

まぁ見る方法はいたって簡単ですが、
対象プロジェクトの「ProjectSettings」フォルダにある「ProjectVersion.txt」を開けば書いてあります。

開くとこんな感じに書いてありますね。


という感じで調べることができますね!
思い出せないときは確認してみてくださいませ!

ではまたノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【ハルシオンブログ】初心に戻って。画面をタップすると文字がぽーんって表示する方法。それにしても体裁もなんもない汚いブログですね。(∀`*ゞ)テヘッ 

おはようございます。坂内です。
ここ数年鳴りを潜めていた花粉が俺の中で大暴れしているようです。
つ、つれえ orz

さて、ネタもないので、初心に戻って「画面をタップすると数字が飛び出るよ」とかってものを解説。

【数字が飛び出るよ】
 ①飛び出るテキストを用意しよう
  
  UIー>Textで飛び出るテキストのベースを用意
 ②テキストにフォントを指定したり、サイズを指定しよう
 ③出現場所から上にぽーんと飛び出る動きを作る
  ぽーんと飛び出る感じにしたいので、作成したTextにRigidbody2Dを付けます。(物理法則にしたがって上に飛んだあとに落としたいから)


 ④以下のスクリプトを①で作ったテキストオブジェクトにつけます。
  <PopupText.cs>  
using UnityEngine;
using UnityEngine.UI;

public class PopupText : MonoBehaviour {

int[] RANDOM_NUM = {0,999999};
float[] UP_POWER = {300f,450f};

void Awake() {
transform.SetParent(GameObject.Find("Canvas").transform,false);
}

  void Start () {
Text txt = GetComponent <Text>();
txt.text = Random.Range(RANDOM_NUM[0],RANDOM_NUM[1]).ToString("n0");
Rigidbody2D rigid = GetComponent<Rigidbody2D>();
rigid.AddForce(Vector2.up * Random.Range(UP_POWER[0],UP_POWER[1]));
Invoke("DestroyNum",1.5f);
  }

void DestroyNum() {
Destroy(gameObject);
}
}

 ⑤このテキストオブジェクトはプレハブにしておきます。
  

【呼び出されたら上で作った数字が飛び出るようなものを作る】
 ①とりあえずこんな感じのスクリプトを作ってCanvasにでもつけておきましょう。
 <PopupManager.cs>
using UnityEngine;

public class PopupManager : MonoBehaviour {

public GameObject popupObject;

public void PopupObject() {
Instantiate(popupObject);
}
}

 popupObjectには先ほど作ったテキストのプレハブをアサインします。
 

【画面をタップ】
 簡単に画面をタップといってもいくつか方法があると思います。
 その中の2つほどを紹介。
 ■画面全部をボタンにする方法
  ①こんな感じで画面いっぱいにImageを置きます。
  
  ②ImaageのColorにあるαを0にして見た目は何もないようにします。
  ③ImageにButtonコンポーネントを付ける。
   ButtonのOnClickにCanvasにつけたPopupManagerのPopupObjectを指定します。


 ■画面がタップされたのを検出する方法
  ①先ほど作ったPopupManager.csに次のコードを追加する。
<PopupManager.cs>
using UnityEngine;

public class PopupManager : MonoBehaviour {

public GameObject popupObject;

public void PopupObject() {
Instantiate(popupObject);
}

void Update() {
if(Input.GetMouseButtonDown(0)) {
PopupObject();
}
}
}


 追加されたのはvoid Updateです。
 Input.GetMouseButtonDown(0)で「画面が押された」を検出しています。
 
以上、【数字が飛び出るよ】【呼び出されたら上で作った数字が飛び出るようなものを作る】【画面をタップ】
の3つの過程を終えると、こんな感じの物ができます。



ってことで、文字を飛び出す方法でした。

あでゅ~ノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【ハルシオンブログ】RPGのストーリーパートで宴を使ってるわけですが。 

こんにちは。
大坂です。

関東は今日気温が20度とかまで上がるみたいです!
春だなと思ったら来週また一桁まで下がるんすね…orz

さて、タイトルの通りハクスラRPGのストーリーパートでは宴を使ってます。


トランジションで画面遷移させようとしたときにちょっとあったのでメモしときます。
使うのはこの機能
ルール画像を使ったフェード

画面全体をやる場合はキャプチャとって背景入れ替えて、キャプチャをルールフェードさせる感じ。
説明の通りで簡単そうですねっと。

1個目の嵌り。
レイヤーの設定。
CaptureImageのArg3にオブジェクトを表示するレイヤー名とあるやつの設定が先ほどのページになくて迷った。
結局設定はLayerシートにこんな感じでやればOKでした。(Utage入れた時にあるSample.xlsに書かれてますね…)


2個目の嵌り。
なんかエラー出た。


うーん??
設定はこんな感じ。
マクロ。


宴で処理させるために書いたところ。


結果としては、CaptureImageのArg1に「BG」を指定していたのが原因でした。
背景のレイヤーの作られる背景オブジェクトの名前が「BG」で被るからそちらを対象に動いてダメになるんでしょうね…。
ということでCaptureImageのArg1に「Capture」とかにしてあげたら動きましたよ!

ということでこの辺で嵌るような人がいるのかは謎ですがメモでした!
ではまたノシ

Category: 開発日記(Unity)

tb 0 : cm 0