2015年9月21日月曜日

NGUIとペイント機能

Unityでペイント機能を付けようとコチラのプロジェクトをダウンロードしてみました。

がNGUIと相性が悪い点があってインポートするとNGUIの「UIWidgetContainerEditor」というスクリプトでエラーを吐いた。

仕方ないので一文をトグルしました。

メモがてらに書いておきます。

2015年5月15日金曜日

UnityAdsの使い方とゲームへの組み込み方

UnityAds(ユニティアド)とは 


15秒のアプリの広告動画をゲーム内で再生してインストールされれば広告収入を得るという仕組みのUnity公式の広告です。

クロッシロードはこのUnityAdsで2億円ほど売り上げたらしいです。(細かい数字は忘れました)

・UnityAdsを使うことのメリット


Unityとの親和性が高い(Unityが出しているので当たり前ですが)

・iOS8からアイコン型の広告がリジェクトされ易くなっているのでリジェクト対策になる

・誤クリックを狙ったアイコン型やバナー型広告等と比べてプレイヤーのストレスが非常に少ない。

・アイコン型やバナー型広告等と比べUIがすっきりする

・ゲームのシステムに組み込みやすい


例えば「クロッシーロードのゲームオーバーになっても動画を再生すれば復活できる等」

今回のゲームへの組み込みはこの仕組みを採用してみました。


UnityAdsの使い方


まずUntyAdsで登録します。

登録したら、広告を入れるゲームを登録します。










登録したゲームIDを以下のスクリプトの初期化の部分に入れてShowAd()関数を実行するだけです。
switch構文で条件分岐して再生を完了した場合のみSendMassageで関数を実行するようにしてあります。


using UnityEngine;
using System.Collections;
using UnityEngine.Advertisements;

public class UnityAds : MonoBehaviour {
 public GameObject Gameover;
 // Use this for initialization
 void Start () {
  // ゲームIDを入力して、Unity Adsを初期化する
  Advertisement.Initialize (\"ゲームID\");
 }
 
 // Update is called once per frame
 void ShowAd () {
  // Unity Adsを表示する準備ができているか確認する
  if (Advertisement.isReady ()) {
   Debug.Log(\"ShowAds\");
   Advertisement.Show(\"rewardedVideoZone\", new ShowOptions {
    pause = true,
    resultCallback = result => {
     switch (result)
     {
     case ShowResult.Finished:
      Debug.Log(\"The ad was successfully shown.\");
   // Unity Adsが無事に再生完了すれば復活の関数を実行
      Gameover.SendMessage(\"ContinueAds\");
      break;
     case ShowResult.Skipped:
      Debug.Log(\"The ad was skipped before reaching the end.\");
      break;
     case ShowResult.Failed:
      Debug.LogError(\"The ad failed to be shown.\");
      break;
     }
    }
   });

  }
 }

}
上記のシステムをエルフギアソリッドに組み込んであるのでダウンロードして確認して頂けるとわかりやすいかと思います。

ゲームオーバーになっても動画を再生(UnityAdsを見る)すれば復活するシステムです。

一度この形式広告でゲームを遊んでみるとわかりますが、誤クリックを狙ったアイコン型やバナー型広告等と比べてストレスが非常に少ないです。

ゲームオーバーになってゲームがひと段落してから自分で選択して広告を見るのでダウンロード率も高いそうです。

UIもすっきりするので今後この形の広告(動画広告)が主流になっていきそうです。



エルフギアソリッド 〜本格3Dスパイアクション脱出ゲーム -
【iOS】  

2015年1月18日日曜日

Unity NGUIのボタンのレスポンスが悪い場合

NGUIのボタンの色を透明にするとボタンのレスポンスが悪くなるみたいです。

メモがてらに記しておきます。

2015年1月12日月曜日

Unityで広告を入れるなら簡単なnend(ネンド)をおすすめします。

僕も迷ったUnityで広告を入れる会社選び。

nendoならアセットをダウンロードして広告プレハブをシーンに追加して自分のIDを入れるだけ。

xcodeでビルドする際もフレームワークを2つ追加するだけです。

かなり簡単に実装できます。

NENDをUnityで使うための設定方法を説明します。


















まずNENDからUnityアセットをダウンロードし Pulginsに入れます。。

次にシーンに空のGame Objectを作り、そこにNend Ad Banner(もしくはNend Ad Icon)のスクリプトを追加し、Nendで設定した「apiKey」と「spotID」を入力するだけで終わりです。

















Xcodeでビルドする際は「ImageIO.framework」と「AdSupport.framework」を追加して下さい。

下の+ボタンをダブルクリックすると追加するフレームワーク一覧が出るので上記の2つを選んでビルド!






実機でテストしないと広告の位置はわかりませんがとりあえず表示されるはずです。

かなり簡単なので広告会社に迷ったらNENDをおすすめします。



2014年11月17日月曜日

[Unity]スクリプトでTag(タグ)を変更する

スクリプトでタグTagを変更できると何かと便利です。

方法はいたって簡単で、

this.tag = ("タグの名前");

でOK。プレイヤーからデフォルトに戻しして敵から隠れるのに使用しました。


2014年11月16日日曜日

[Unity]RayCastでプレイヤーと敵の間に壁があるか確かめるLincast

メタルギアのようなかくれんぼゲームを作ろうとすると敵に発見されるシステムと壁に隠れるシステムを作らなければなりません。

敵に発見されるシステムはコライダにOnTriggerEnterを使えばいいのですがそれだけではプレイヤーと敵の間に壁がある場合でも発見されてしまいます。





これでは壁で見えていないはずなのに敵に見つかってしまいます。









そこで敵とプレイヤーの間にRayCastを飛ばして壁があるか判定します。

RayCastでは2点間の距離を測りにくいのでLinecastを使います。

Physics.Linecast (pos, player.position,layerMaskWall)

posは敵自身のポジションでそこからプレイヤーのポジションまでの間にlayerMaskWallである設定したレイヤー(壁)があればtrueを返します。

これでTriggerの中に入っていても見つかっていない状態に出来ます。

現在Unityでアプリを作成しています。



久しぶりの更新です。

現在UNITYでアプリを製作中です。

個人で出来る範囲ですが、メタルギアのようなゲームを作っています。

これからちょくちょく更新していきたいと思います。