AIプログラムとかUnityゲーム開発について

探索や学習などを活用したAI系ゲームを作りたいと思います。

魔法のエフェクト追加

http://27.120.88.154/rts7.gif
範囲攻撃は突き抜けるので、縦に並んでいる敵には有利ですね。
最後は、ダブルノックアウトw


assetStoreのこのパーティクルエフェクトを買いました。
Pinwheel Fantasy Effect
https://www.assetstore.unity3d.com/jp/#!/content/50310

ドキュメントを見ると、作者はベトナムの方でした。
30種類ぐらい入って$2ぐらいでお得でした。
パーティクルシステムも勉強しないと、ちょっといじりたいなと思ってもなかなかできないですね。

Vector3 pos = transform.position + Vector3.up*2.2f+transform.forward*1;
GameObject obj;
if (type == 3 ) // 魔法使い
{
        obj = (GameObject)Instantiate(Resources.Load("Magic"), pos, transform.rotation);
        obj.GetComponent<Magic>().power = attackPower;
        obj.GetComponent<Magic>().enemy = enemy;
        obj.GetComponent<Magic>().target = targetcc.gameObject;

        Vector3 pos2 = transform.position + Vector3.up * 0f;
        GameObject obj2;
        obj2 = (GameObject)Instantiate(Resources.Load("VenomSpell"), pos2, transform.rotation);
        Destroy(obj2, 3f);
}

Magicはトリガー付きの球です(MeshRenderが非表示)。攻撃力とターゲットを設定して生成。
緑色の魔法陣エフェクトを自分の足元で生成。Destroyは第二引数に時間を設定しておくと、指定時間後に自動削除されるので便利です。



親から、攻撃力と敵を与えられて生成される。Startで敵の方向ベクトルを作っておいて、後はひたすらその方向に移動していく。
球の大きなトリガーがついているので、触れた敵のGetDamage()を呼び出してダメージを与えます。
これが弓では何か敵に当たると、そこでデストロイしてますが、範囲攻撃の魔法はDestoryしないので、指定時間までは連続で殺傷できます。
ここでは寿命を3秒にしてますが、放っているキャラに応じて変えたい場合は、powerのように外部から値を渡せばいいです。

magic.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Magic : MonoBehaviour
{
    public float power;
    public GameObject target;
    public int enemy;

    Character targetcc;
    Main main;
    float timer;
    Vector3 fw;

    void Start()
    {
        main = GameObject.Find("Main").GetComponent<Main>();
        timer = 3f;
        targetcc = target.GetComponent<Character>();

        fw = (target.transform.position + Vector3.up * 2.5f - transform.position).normalized;

        Vector3 pos2 = transform.position + Vector3.up * 0f;
        GameObject obj2;
        obj2 = (GameObject)Instantiate(Resources.Load("IceSpear2"), pos2, transform.rotation,this.transform);
        Destroy(obj2, 3f);
    }

    void Update()
    {
        if (timer > 0) timer -= Time.deltaTime;
        else
        {
            Destroy(this.gameObject);
            return;
        }
        transform.position += fw * Time.deltaTime * 7;
    }
    void OnTriggerEnter(Collider other)
    {
        Character cc = other.GetComponent<Character>();
        //Debug.Log(other.name);
        if (cc != null && cc.enemy!=enemy ) cc.getDamage(power);
    }
}


Start()で、Destroy(this.gameObject,3f)としておけばupdate()でtimer更新はいらないですね。

SchoolGirlsSimulatorのロシア人のレビュー

SchoolGirls Simulator - Google Play の Android アプリ

Дарья Севрюк(2017/03/23、17:14) 0 0
ロシア語からの自動翻訳 - 元のレビューを表示
主よ!これは私が今まで彼の13年間プレーした最高のゲームです!ファンタスティック!私は言葉を持っていません!
唯一の管理は非常に快適ではありませんが、あなたは慣れます!あなたはこのゲーム、あなた自身でこのゲームのヒロイン感を再生します!
私は、これは神の遊びであり、最も大きなプラスは、それがインターネットなしであるということです何の言葉もありません!
ヒーローあなたは自分自身を作成することができます! 、zhresh、ezdiesh、殺すと言って、飛びます!いないファンタジーゲーム!
しかし、一つの小さな欠点は、英語のすべてが、あまりにも、ロシア語を追加してくださいということです!私は非常に感謝されます!

レビュー投稿ありがとうございます!
よく解らないけど、褒めてもらっているのかな?( ゚Д゚)
ロシア語はもちろん解らないから、英語にしてみてみよう。

Speak! This is the best game I've ever played in my 13 years! Fantastic !
 I have no words! Only control is not very convenient but then you can get used to it! 
When you play this game, it feels like you are the heroine of this game! I have no words this is the most divine game and the biggest plus is that it is without the Internet!
You can create a hero yourself! Fly, kill, ride, eat, say! Not a game but a fantasy !!!
 But one small disadvantage is that everything in English, please add Russian, too! I'll be very grateful!

そうそう。インターネットに接続はいらないんですよ。リソース関係は全部pkgに入ってますので、実行時になにかダウンロードしたりはしません。

あと、確かに操作性に問題があるかも。
ジョイパッド操作をスマホ上に再現してるだけなんで、本来は、スマホの最適なインタフェースは、指タッチとかドラッグなんだよね。
移動も、ジョイパッドじゃなくて、タッチした場所に移動するみたいなインタフェースが本当は望ましいのかもしれない。
Bluetoothゲームパッドなんか980円でamazonで買えるけど、普及率は低いというか、携帯端末にわざわざジョイパッドつなぐ人も少ないよね。

英語 (アメリカ合衆国)16.83%

スペイン語 (アメリカ合衆国)11.88%

日本語 (日本)10.89%

ロシア語 (ロシア)10.89%

ポルトガル語 (ブラジル)7.92%

ロシア語ユーザーはけっこう多いですね。
ロシア語版はいづれやりたいです。
google自動翻訳になっちゃいますけど。ただ、英語から訳すとして、それがまあまああってるかどうかがさっぱり解らないのが困りますね(^^;

壁もおけるようにする

壁も配置できるようにしてみた。
経路探索をやっていないので、壁を迂回することはできないので、壁殴りが発生する。
壁が無ければ、アーチャーは戦士にタコ殴りにされるが、壁をつかってチートしているので、
戦士をせん滅できる。
http://27.120.88.154/rts3.gif
経路探索した方がいいのかな?
自前のwaypoint探索を使うか。
ただ、軍団が増えた場合に遅くなるかな?
壁をうまく配置して勝つというゲーム性が作れれば面白くなる。
あと、爆弾とかもいいと思う。
自陣に引き込んで爆弾で一網打尽。

あと、相手を全滅させるだけじゃなくて、王様という大本営をつくって、そこを倒られると負けも必要かも。
クラクラでいうところのホームタウン。

集団VS集団の戦い

次は、集団と集団で戦うゲームを作ろうと思います。

http://cdn-ak.f.st-hatena.com/images/fotolife/y/yasu9780/20170323/20170323102626.png?1490232822


今のところ種類は、戦士・弓使い・魔法使いの3種があります。
これを画面、下の方で選択して、マップ上でタッチすると、そこに配置できます。
すでに配置しているキャラをタッチして、新しい場所をタッチすると、そっちにキャラが移動します。

キャラの配置は3種類のマップで保存できます。
自軍は青軍ですが、青軍に保存している配置マップを、赤軍にコピーして互いに対戦できます。


対戦の様子。
弓は射程は長いけど、攻撃力で劣ります。また戦士は弓使いよりHPが高くタフです。
戦闘中はなにもできないので、ゲーム性は純粋に初期配置です。
http://27.120.88.154/rts.gif

任意の配置マップをサーバーに保存できるようにして、
他の人の配置と戦えるようにしたいと思います。
一応、ネットワーク対戦という感じになります(リアルタイムではないので、すれ違い型の対戦)


ランダム性と物理エンジンの未使用って感じで対戦を行えば、おそらく初期配置だけを保存しておくだけで、
対戦の再現ができると思います。
これはクラッシュオブクランもおそらくそうだと思うんですが。
他の人が自分の軍団と対戦させた結果が見れるようにすれば、面白いと思います。

http://27.120.88.154/rts2.gif

HTCがVR事業に注力

vrinside.jp

上海の工場を売却してVRに投資らしい

Googleから請け負ったPixelとPixel XLの製造も、さほどHTCの助けにはなっていないようだ

スマホ自体はもう今後商売にならないっぽいよね。
もう需要がいきわたった感じ。

例えば、Intelに対してAMDRyzenで追いついてきてるけど、むしろIntelがもう成長できないとこまで来てるんだよね。
プロセスルール変えても1CPUのクロック上がらないし。
WindowsのPCもいきわたってるから、もうあんまり売れないし。
いつか、スマホも同じ状態になる。
スマホなんて、結局、部品を組み合わせてAndroidを入れるだけの組み立てビジネスだと思うし。人件費ダンピング中国企業に値段では勝てないだろうし。


HTCが、社運をかけてVIVEをやるなんてなんかかっこいい。
オキュラスは親会社がFacebookだけど、なんか大学の延長って感じで商売っ気が少ないので、隙はあると思う。

ASUSとかBENQとか台湾はけっこういいメーカーが多いな。
日本のITメーカーよりよほど存在感があると思う。