DeployGateのインストール後,インストール画面が現れなかった場合は,以下のように対応してみてください
- 掲示板に書いてあるアドレスにもう一度アクセスし,インストールをタップします

- アプリケーションを選択画面が表示されますので,DeployGateを選択します

- アプリのインストール画面となりますので,インストールをタップしてください

- お疲れ様でした
iOS版は下記をご覧ください
DeployGateアプリのインストール後で止まってしまった方は下記をご覧ください
注)画面の見え方はAndroidの機種や販売時期などで異なることがあります












NCMBのcreate DataはUTCなのでJSTに戻す
C#でもUnityだと動かない例(.NET 2.0だから?)
DateTime dt = objdata.CreateDate.Value;//データ更新日をdtに
TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time");
DateTime jst2 = TimeZoneInfo.ConvertTimeFromUtc(dt, tzi);
Unityでも動く例
DateTime dt = objdata.CreateDate.Value;//データ更新日をdtに入れる //UTCをJSTに TimeZone zone = TimeZone.CurrentTimeZone; TimeSpan offset = zone.GetUtcOffset(DateTime.Now);//オフセット取得して差分を出す DateTime jst = dt + offset;//差分を計算してJSTにする
ちょっとめんどい
デバッグ環境ではどこかにPlayerPrefesが残っててエラーがおきないのだけど,初めてのユーザはそれが起こる問題
とりあえずの回避策
//SUリストの取得?
string mytest = PlayerPrefs.GetString ("sulist");//PlayerPrefsに保存してるのはいかがなものかと,,
//上のsulist(mytest)がnullならエラー出る
if (mytest.Length > 0) {
sudic = Json.Deserialize (mytest) as Dictionary<string, object>;
foreach (KeyValuePair<string , object> pair in sudic) {
Debug.Log (pair.Key + ":" + pair.Value);
acl.SetReadAccess(pair.Value.ToString(), true);//加算用のテンポラリ変数
}
}
ログイン時にこのsulistを取らせることで根治できるはず
2点間の距離を取得する場合,通常では
obja
objb
//変数系
public NavMeshAgent mynav2;//インスペクタに現れるのでNavMeshがついているゲームオブジェクトをアサインする
float enemyDistance;
//以下をUpdate(){ } の中に入れる
enemyDistance = mynav2.remainingDistance;
で取得可能.
スクリプトサンプル例
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class aiDistance : MonoBehaviour {
public NavMeshAgent mynav2;//インスペクタに現れるのでNavMeshがついているゲームオブジェクトをアサインする
float enemyDistance;
public Text disTex;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
enemyDistance = mynav2.remainingDistance;
disTex.text = enemyDistance.ToString ();
}
}
実行画面例
衝突判定系をまとめておきます
ここでは扱いやすいTrigger系のみにしておきます.Collider系はちょっと面倒なので,,,
動的に変更できる
時間がないのでスクリプト全文
using UnityEngine;
using System.Collections;
//using UnityStandardAssets.Characters.ThirdPerson;
public class targetchange : MonoBehaviour {
public NavMeshAgent myObj;
public Transform goalpos1;
public Transform goalpos2;
public Transform dummy;//AIThirdPersonを入れる
Transform setPos;
void Start(){
setPos = dummy;
}
void Update(){
myObj.SetDestination (setPos.position);
}
//スピードを0.5に変える
public void chngSpeed(){
myObj.speed = 0.5f;
}
//ターゲットをgoalpos1にする
public void target1(){
setPos = goalpos1;
}
//ターゲットをgoalpos2にする
public void target2(){
setPos = goalpos2;
}
}
参考動画(ボタンで切り替えています)
今回はAI(人工知能)を利用したゲームを制作する
この場合のAIとは流行のDeep Learning(深層学習)ではなく,最短距離を検索する経路探索アルゴリズムである
UnityではNavigation SystemでA*というアルゴリズムを利用してこれを実現している
https://docs.unity3d.com/jp/current/Manual/nav-InnerWorkings.html





NPC(Non Player Character)を動かす一つの方法として,こうしたアルゴリズムが利用されている


追いかけるスピードを変化させることで,例えばゾンビが,撃たれたきっかけでスピードを落としたり,距離で判定しギリギリで追いつかないといった設定もできる
これらを利用して可能なのが
・鬼ごっこ
・障害物競走
・だるまさんがころんだVR(需要あるのか?)
などではないか.
3)ゲームを企画する
これまでのテクニックを用いて,AIを用いたゲームを企画し,実際に制作せよ.地形(Terrain)またはPlane上でプレイし,制限時間を設けること.
なんらかの勝ち,負けを判定し,結果を変えること
スクリプトはEdukit内の物を使ってかまわない(改造してもかまわない)
機能ではなく世界観やその世界が持つ独自のルールに注力すること
UnityでのNCMBパスワードリセットの方法(全文)
時間ないので全文転載
using UnityEngine;
using System.Collections;
using NCMB;
using UnityEngine.UI;//use unity gui
using UnityEngine.SceneManagement;
public class PassReset : MonoBehaviour {
public Text emailfield;
public Text statustxt;
string meado;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
public void doResetvoid(){
meado = emailfield.text;
//NCMBUser user = new NCMBUser();
NCMBUser.RequestPasswordResetAsync(meado,(NCMBException e) => {
if (e != null) {
UnityEngine.Debug.Log ("ログインに失敗: " + e.ErrorMessage);
statustxt.text = "リセットに失敗しました\nメールアドレスを確認してください";
} else {
statustxt.text = "パスワードリセットに成功しました\nメールを受信しパスワードを再設定してください";
Invoke("toTop", 3f);
}
});
}
//scne change
public void toTop(){
SceneManager.LoadScene ("top");
}
}
メールに仮パスワードとリセットページへのリンクが届くのでWEBでリセットするらしい
NCMBのuser.objectIdを取得して,他のところで使います
//JSON読み込み
foreach (NCMBUser users in userList) {
suDicAll.Add(users.UserName.ToString(), users.ObjectId.ToString());//Dictionaryに入れる
//ここでJSON化し,PlayerPrefesに入れる
myjson = Json.Serialize(suDicAll);
}//foreachここまで
PlayerPrefs.SetString("sulist", myjson);
//JSON読み出し
using MiniJSON;//use miniJSONが必要です
string mytest = PlayerPrefs.GetString ("sulist");
var sudic = Json.Deserialize(mytest) as Dictionary<string, object>;
foreach (KeyValuePair<string , object> pair in sudic) {
Debug.Log (pair.Key + ":" + pair.Value);
acl.SetReadAccess(pair.Value.ToString(), true);//加算用のテンポラリ変数
}