• このエントリーをはてなブックマークに追加

今なら、継続入会で月額会員費が1ヶ月分無料!

記事 5件
  • 桃色空間カウボーイズの作り方

    2016-10-25 06:02  
    オレだ。 ちまたのVRコンテンツがヌルすぎて、VR一筋30年。元祖3D野郎が真の桃色VRってやつを作ってやったぜ。 まず、材料だ。 材料は htc Vive、それとVR対応PC、まあここではドスパラのガレリアを用意する。 htc Viveは12万くらい。対応PCとセットで買うと30万円弱くらいだ。 高い? 女の子と6回デートすること考えたら安いだろ! あとはUnityをダウンロードする。無料版でOK その他に必要なのは SteamVR   MMD4mechanim あとはMMDデータを適当に拾ってくる http://www.nicovideo.jp/tag/MMDモデル配布あり VPVP Wiki そして、MMD4mechanimでUnityにMMDデータとモーションデータと音楽データを取り込んだり、変換したりする。詳しくはここ→http://qiita.com/hiroyuki_hon/
  • [アラフォーUnity]アラフォーからのUnity入門『アラフォーの作るべき物理ゲームはビリヤード』と相場が決まってる!!

    2014-08-07 07:00  
    102pt
    アラフォーUnityとは?体力の限界を感じながらも、最近流行のプログラミング環境Unityに挑戦するアラフォープログラマー、シン石丸の身を挺したドキュメンタリーである……アラフォーの作るべき物理ゲームはビリヤードと相場が決まっている!!
    Unityには物理(剛体)シミュレーション機能が入っていると聞く……。そこで、良い年したオッサンが習作に作るべきゲームとは!?皆さん、お分かりか!?決まっているのだ!!ビリヤードもどき……と!!それを作るのが、昭和50年代なのだ!!かつて、『次世代ゲーム機』と言われた、1999年〜2000年代初頭にDreamCast、PS2、XBOX、はたまたPanasonic、NEC製端末華やかなりしころのケータイ電話。新しいハードが登場すると、かならずローンチタイトルに紛れ込んでくるソフトがあった!!それが「球を転がすゲーム」だ!!必ずだ!!必ずと言って良いほど、「球を転がすゲーム」は登場していた!!これはおそらく、物理計算のプログラムさえすればとりあえず出せる。プログラマと少人数のスタッフで作成可能。プログラマも新しい環境をとりあえず学習できる。新ハード発売のご祝儀相場にとりあえず乗っかりたい。という複数のメリットから「とりあえずローンチは球を転がすゲームを出しときゃいいだろ!!」という作戦をいくつかの会社が採用したために生まれた現象である考えられる。なので、当アラフォーUnityでは、「とりあえず球を転がすゲーム」を先人の知恵にもとづいて作ってみることにしたのだった!!球を置くのと球の色を調べるのが地味で面倒
    とりあえず、ビリヤードの9ボール風に球を置こうと思ったんだが、この球を置く場所と色を調べるのが地味に面倒。アラフォーはすぐ面倒くさがるのだ!!良くない!!がわかりきってることは面倒なのだ!!とは言え、ごちゃごちゃ言ってもモノが出来ないので、とりあえずエイヤとスクリプトを書く!!とりあえずボールはプレハブで作っといて、前回プレハブを使うのはやったので。場所とカラーコードを調べて、配列に突っ込んで、ループで作成と。どりゃー!!!!    // Use this for initialization    void Start () {        float y = 5f;        Vector3[] posArray = {            new Vector3 (0f, y, -5f),            new Vector3 (0f, y, 0f),            new Vector3 (Mathf.Sin(Mathf.PI/180*30), y, Mathf.Cos(Mathf.PI/180*30)),            new Vector3 (-Mathf.Sin(Mathf.PI/180*30), y, Mathf.Cos(Mathf.PI/180*30)),            new Vector3 (Mathf.Sin(Mathf.PI/180*30)*2, y, Mathf.Cos(Mathf.PI/180*30)*2),            new Vector3 (0, y, Mathf.Cos(Mathf.PI/180*30)*2),            new Vector3 (-Mathf.Sin(Mathf.PI/180*30)*2, y, Mathf.Cos(Mathf.PI/180*30)*2),            new Vector3 (Mathf.Sin(Mathf.PI/180*30), y, Mathf.Cos(Mathf.PI/180*30)*3),            new Vector3 (-Mathf.Sin(Mathf.PI/180*30), y, Mathf.Cos(Mathf.PI/180*30)*3),            new Vector3 (0, y, Mathf.Cos(Mathf.PI/180*30)*4)        };        Color32[] colorArray = {            new Color32(255, 255, 255, 255),            new Color32(225, 180, 1, 255),            new Color32(4, 55, 138, 255),            new Color32(251, 21, 21, 255),            new Color32(102, 80, 165, 255),            new Color32(253, 227, 70, 255),            new Color32(255, 95, 0, 255),            new Color32(54, 132, 110, 255),            new Color32(160, 13, 41, 255),            new Color32(31, 31, 31, 255)        };        // Make Balls        for (int i=0; i < posArray.Length; ++i) {            GameObject b = (GameObject)Instantiate (ball, posArray[i], Quaternion.identity);            if(i==0){                b.name = "MyBall";            }else{                b.name = "Ball"+i;            }            b.renderer.material.color = colorArray[i];        }    }
    このStart()関数の中の配列を作るのが地味に面倒だったわけですよ。ビリヤード台を作り、Phsic Materialってヤツを設定してみる
    ビリヤード台を、まずCubeを薄く伸ばして下の緑の板を作り、壁用に4つCubeを作り、茶色に設定。この壁にPhysic Materialを設定しました。これは物理的な特性を設定できるマテリアルとのこと。Bounciness(反射係数)を設定して、良い感じでボールが反射するようにしました。影があまりに一瞬で付けられて驚き!!
    3Dプログラミングって影をいかに書くかって結構難しかったわけですが。Unity Basicでも使用可能な、Directional Lightの設定の、ShadowTypeをHard Shadowsにしたところあっさり影が描画されて驚き!!影がつくと、絵的にはまぁまぁマシになってやる気が出ます(笑台を中心にカメラを廻してボールを打つ
    前々回、地球を廻すのに書いたコードを若干変更して、台を中心にカメラを廻すようなコードを書いてカメラに関連付け。この部分はArcBall.csに記述。ボールを打つ処理をこんな感じで作成。    // Update is called once per frame    void Update () {        if (Input.GetMouseButtonDown (0)) {            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);            RaycastHit hit;            if(Physics.Raycast(ray, out hit)){                if(hit.collider.gameObject.name=="MyBall"){                    Vector3 force = ray.direction;                    force.y = 0;                    force.Normalize();                    force *= 60f;                    print ("force:" + force);                    hit.rigidbody.AddForce(force, ForceMode.VelocityChange);                }            }        }    }
    カメラからレイを飛ばして、手球をクリックしてたら、XZ平面上のカメラからのベクトルに対して力を加えるような処理に。カメラを回転させる機能によって、ボールの打つ向きもコントロールできると。そんな感じでとりあえず完成〜
    とりあえずとりあえず、こんな感じで完成ー。動くアプリがコチラ。http://shinishimaru.github.io/BallHit/コードはgithubに。https://github.com/ShinIshimaru/BallHitなんとなく物理エンジンを使ってみたが、まだアラフォーUnity使いとしては道半ば!!いまだUnityをどの程度使えるかわからず!!待たれよ、次回!!参考
    Unity 4.2で無料版でもリアルタイムの影の描画が可能に - 強火で進めhttp://d.hatena.ne.jp/nakamura001/20130728/1374973505見てわかるUnity4 C#超入門http://www.amazon.co.jp/見てわかるUnity4-超入門-GAME-DEVELOPER-BOOKS/dp/4798040479 
  • [アラフォーUnity] アラフォーはプレハブを使うことが出来るのか

    2014-07-30 07:00  
    102pt
    アラフォーUnityとは、40代目前の電脳空間カウボーイズリーダー、シン石丸がプログラマー35才限界説に挑戦しUnityを体当たりで学習するドキュメンタリーである……
    どうもUnityにはプレハブってもんがあると聞く
    ほぉ?プレハブ?
    あー、あの工事現場とか、庭に離れ作ったり、物置作ったりするアレね?
    え?違うの?
    Unityにある機能?あ、そうなの?
    んじゃ、それやってみるわ!
    どうやんのかよく知らんけど!
    アラフォーUnity第2回はプレハブをやってみます!果たしてアラフォーはプレハブを使うことができるのか!?出来ないのか!?アラフォー、プレハブ(Prefab)を知る
    Unityのドキュメントを読むと、『再利用できるゲームオブジェクト』とのこと。
    なるほど。
    アラフォーともなるとおっさん経験長いから、言わんとすることはわかりまっせ。
    つまりゲーム内でよく使うパーツをまとめてプレハブとして登録して再利用するってことでしょ?
    OKOK。
    それなら、やってみよう。
    プレハブで球を作って球がいっぱい出てくるアプリを作ってみる
    プレハブで球を作って、それを大量に複製するというモノを作ってみようと決めた。
    まぁまぁ、別に面白いもんではないですがw
    そういう基礎練習が大事よねってのも年だからわかってしまう的なねw
    とりあえず、球を作ってみて、球にマテリアルを設定。作った球をHierarchyウインドウからAssetsウインドウ内にドラッグ&ドロップしたら、晴れてプレハブが作れました。
    めでたいめでたい。あとはプレハブを生成してみよう
    プレハブは再利用できるってところが肝とのことなんで、これを大量に生成してみたいところ。
    そこで、老体に鞭打ってw こういうスクリプトを書いてみた。

    using UnityEngine;using System.Collections;public class AppManage : MonoBehaviour {    public GameObject ball;    // Use this for initialization    void Start () {        makeBall ();        }    void makeBall(){        // make rand pos        float range = 5f;        Vector3 pos = new Vector3 (Random.Range (-0.5f, 0.5f) * range, Random.Range (-0.5f, 0.5f) * range, Random.Range (-0.5f, 0.5f) * 10);        GameObject b = (GameObject)Instantiate(ball,                    pos,                    Quaternion.identity);        // make rand color        b.renderer.material.color = new Vector4 (Random.Range (0.0f, 1f), Random.Range (0.0f, 1f), Random.Range (0.0f, 1f), 1f);        }    // Update is called once per frame    void Update () {        if (Time.frameCount % 5 == 0){            makeBall ();        }    }    }

    Instantiateという命令でプレハブを生成できるとのこと。
    このスクリプトを、シーン上に、GameObject -> Create Empty で作成した空のゲームオブジェクトに関連付け。Script内のball変数に作りたいプレハブ、BallPrefabを設定。
    これで動くようになりました。
    ついでにプレハブの破棄もやってみよう
    シーンの下のほうに平面のデスゾーンを作って、そこにあたったら生成されたプレハブであるボールが破棄されるようなスクリプトも書いてみましたよ。

    using UnityEngine;using System.Collections;public class DeathZone : MonoBehaviour {    // Use this for initialization    void Start () {        }        // Update is called once per frame    void Update () {        }    void OnTriggerEnter(Collider other) {        print ("Destroy");        Destroy(other.gameObject);    }}

    Destroyで破棄とのこと。
    出来たー
    そんなこんなで、出来ましたー
    http://shinishimaru.github.io/MakePrefabAndDestroyAndRandColorMaterial/
    ちょっと見た目が寂しいんで、スカイボックスを設定して、ついでにカメラがぐるぐる廻るようにしてみましたよ。
    コードはこちら。
    https://github.com/ShinIshimaru/MakePrefabAndDestroyAndRandColorMaterial
    いやはや、また新たな基礎技を覚えたアラフォーUnitistシン石丸!
    はたして、Unityを覚えることは出来るのか!?
    出来ないのか!?
    待たれよ次号!!



     
  • [アラフォーUnity] アラフォーからのUnity入門『アラフォーは地球を廻したい』

    2014-07-28 17:39  
    102pt
    アラフォーはUnityを覚えることができるのか!?
    アラフォー。
    それは40代前後の年齢のことを表現する英語、Arround fortyを日本語カタカナ言語化した言葉だ。
    一説には、プログラマーは35才が限界だと言われている。
    そして電脳空間カウボーイズも大半のメンバーがアラフォーと言われる30代後半になっていた。
    それはワタクシ、電脳空間カウボーイズリーダであるシン石丸も同じ事。
    16進数表記ならば0x27才とまだ20代をキープしているわけではあるが、10進数表記ならば39才。
    立派なアラフォープログラマーである。
    はたして自分は老いているのか?
    今、新しい開発環境を学習し使いこなすことができるのか?
    それを実験によって確かめるため、あまりやったことがない開発環境、言語に挑戦することにした!
    そこで白羽の矢をたてたのが、昨今流行しているゲームエンジンUnityだ。
    はたしてアラフォーのオレはUnityを使いこなすことができるのか!?
    老兵はただ去りゆくのみなのか!?
    それともまだまだ若い者には負けないということを証明することができるのか!?
    その疑問に体当たりで答える新コーナー、それがアラフォーUnityだ!


    3Dプログラミング環境を覚えるには、とりあえず地球を回さないとダメだろう!!

    ワシが若い頃には、Direct3D5というものがあってな……
    Direct3D5では、直接モード(Immediate Mode)と保持モード(Retained Mode)というのがあってじゃな……直接モードは上級者が使うもの、保持モードは初心者が使う者という住み分けがあったんじゃ……
    などと今となっては何の役にも立たない3D話をしても仕方ないので、とりあえずUnityをダウンロードして入れてみた!
    とりあえずUnity Basicで頑張ってみよう。
    やっぱり3Dと言えば地球!!(そうか!?)
    地球をマウスでドラッグしたらグリグリ廻るのを作りたい!!
    はたして地球をグリグリ廻すソフトは作れるのか!?
    できるのか!?
    できないのか!?
    よくはわからんが、とにかくやってみるか!!

    アラフォーは細かいことは気にしない
    とりあえず球を作って置いてみる。
    あー、でるじゃん。
    地球のテクスチャをNASAのサイトから拾って貼ってみる。
    うん、なんか貼れた貼れた。
    デフォルトの球が、ちょっとローポリで角ばってるな。
    まぁまぁ、細かいことはいいや。
    次々。

    あとはマウスで回転させるスクリプト書けばよいんじゃね?

    んー、あとはマウスでドラッグしたら地球が廻るようなスクリプト書けば良いのか。
    しかしこれってあれだよな。
    DirectX9にそういうサンプルがあって、あれが好きだったからなんとなく作りたいってだけだよな。
    あのDirectX9のサンプルのコードと同じ数式で計算してやれば、同じことができると思うんだが……
    ネットを検索しても、さすがに古すぎるのか見つからない。
    MacのSpotlightでHDDを検索したら、なんと参考にしたいコードが出てきた!!
    気に入ってたからMacにも持ってきてたんだなー。
    で、そのコードを参考にUnity環境に合わせてC#にコードをコンバート。

    出来ました〜
    http://shinishimaru.github.io/ArcBall/
    で、こんな感じで出来ちゃいましたよ。
    マウスでクリックしてグリグリやると地球が廻ります。
    コード、プロジェクトもgithubに入れときました。

    https://github.com/ShinIshimaru/ArcBall

    お、アラフォープログラマーまだまだ頑張れるのか!?
    果たしてココ止まりなのか!?
    まだまだ頑張れるのか!?
    次号を待たれよ!! 
  • プログラミング経験0だった文系大学生がVR通信対戦ゲームを作っている話

    2014-06-17 15:47  
    みなさん、初めまして。UEIインターンで文系大学生の、くくると申します。昨今、VRの世界が非常に大きな盛り上がりを見せています。SONYがPS4にVRの世界を導入するというProject Morpheusが話題になったり、ヘッドマウントディスプレイをアナウンサーが被る姿がワールドビジネスサテライトで報道されたり、多くの人の目に、「VR(ヴァーチャル・リアリティ)」や「Oculus Rift」という言葉が飛び込んできているように思います。そんな中、この記事では、私がUnityというゲームエンジンを使って作っているVR通信対戦テニスゲーム『Ocula Tennis Online』(オキューラテニスオンライン 以下オキューラ)の紹介と、表題通りプログラミング初心者の私が3Dの、しかもVRの通信対戦ゲームをどのようにして作っているのか、また何故作っているのか、などの情報を、まとめて紹介したいと思い