ProBuilderでプリン作ってみる
はじめに
こっちからの続きです。
どうしてプリン作るの?
プリンはすごく簡単にできそうだし、私甘いもの好きですし。
ProBuilderを"知っている"状態から"少しでも使える"状態にするには、 兎にも角にも自分で何か作ってみようって話。
ワークショップで簡単に使えるようにはなったと思うけど、 時間が経って色々忘れてると思うから、 思い出さないといけないし..うん。
イメージはこんな感じ。
すごい形シンプルすぎて練習になるのかが不安なレベル。
わぁい、ぷりん。 はこね、ぷりんだぁいすき。
目次
環境
- MacBookPro 10.13.4
- Unity 2018.1.0f2
Unity 2018.1.リリース!!
2018/5/2にリリースされました。
ProBuilderがUnityに統合されるのはUnity 2018からみたいですね。
今までは2018βを使っていましたが、 これから乗り換えようと思います。
ProBuilderをはじめる
まずは環境構築します。
新規プロジェクトの作成
ProBuilderのインストール "Window"→"Package Manager"→"All"→"ProBuilder"→"install"
Polybrush,ProGridのインストール 合わせて、PolybrushもProGridをインストールしておきます。 こちらはAssetStoreからのインストールになります。
ProBuilder,ProGrids Windowを開く "Tools"→"ProBuilder"→"ProBuilder Window"
ウィンドウの左側にいれておきましょう。
こちらがメインのツールバーになります。
プリン作ろう
ベースの作成
"New Shape"からcylinderを作成し、名前をpuddingとしておきます。
形を作る
プリン横のEdgeを選択します。 見にくいですが、選択したEdgeが黄色くなっています。 ※わかりやすく線を引いています。
Insert Edge Loopでループカットします。
ループカットする位置を選択します。
ちなみにtoolbarはこんな感じ Unity Blogのスライドから持ってきました。
下の面を選択して、拡大縮小ツールにより好きなプリンの形になるように広げます。
もう(心のプリンフィルターをかければ)プリンに見える...!!
ちょっと頭が気になるので角を丸くします。 下の辺1つを選択肢、Select Edge Loopでぐるっと選択し、Bevelを選択します。
いろいろと目をつむりますが、 それっぽい形になりました。
プリン色に染める
マテリアルの設定
現在のプリンには、大きさや形がわかるようにマークが入っているので、
真っ白なベースマテリアルの作成します。
Material Editorから白マテリアルを割り当てます。 豆乳プリンができました。
色を染める
Vertex Colorsの横の[+]からPaletteを選択
マテリアルのシェーダを変更 ※ここがstandardのままだとうまく染まってくれませんでした。
全体を選択した状態で Vertex Colorsから黄色を選択すれば、 全体が黄色に染まります。
デフォルトの色を使用していますが、
美味しそうなプリンを作るには色の調整を行いましょう。
次にカラメルの色ぬり。
カラメルに染めたいとこだけ選択して同じように Vertex Colorsで染めます。
できました
ProBuilder製のプリン完成しました。
さいごに
ほとんど機能使ってない...
簡単にやりすぎた。
プリン簡単な形すぎてこれだけでできちゃった。
でもいいじゃない。手を出してみるのが大切なんだから。
このあと、これ以外のステージ素材をProBuilderでつくるぞ!!!
補足
これ以外にもいろんなことできるけど、 公式のチュートリアル動画みれば大抵なんとかなると思います。
ProBuilderゲームジャムに投稿したいのです
はじめに
先日、レベルデザインについての話が聞きたくて、 "TrainingDay ProBuilderで学ぶレベルデザイン"のワークショップに参加しました。
本日11:30と17:00に始まる公式ワークショップ。現在会場設営中です。ご参加の皆様、お待ちしております! #unitetokyo2018
— ユニティ・テクノロジーズ・ジャパン@5/7~9 Unite Tokyo 2018 (@unity_japan) 2018年4月21日
11:30からはC# JobSystem & ECS https://t.co/DlfK4ltVXz
17:00からはProBuilderでのレベルデザイン https://t.co/ErO7c9WVhw pic.twitter.com/OFsHKWJxf3
そして本日、2018/5/2にこんな話が...
ProBuilderゲームジャム in unityroom 開催のお知らせ! 条件を満たしたゲームを投稿すれば、Unite Tokyo会場内のunityroomブースにてプレイアブル展示します! #unitetokyo2018 https://t.co/hxNmyYljak pic.twitter.com/qhKfKLlswS
— ユニティ・テクノロジーズ・ジャパン@5/7~9 Unite Tokyo 2018 (@unity_japan) 2018年5月2日
なるほど早速実践しきゃ....!!!
というわけで投稿目指してゲーム作ります。
unityroomでの案内はこちら
イベント「ProBuilderゲームジャム」 | 無料ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう
目次
"ProBuilderゲームジャム"とは
Unity×unityroomで開催されるゲームジャムです。
5/7から開催されるUnite Tokyo 2018に先立ち、オンラインゲームジャムを開催! 応募対象となるゲームはProBuilderを使ったアセットをゲームの一部に組み込んでいることのみ!
ということで、unity1weekのようなテーマをもうけられているわけでなく、 Probuilderを使えばいいそうです。
ステージでも小物でもどんなでも構わないみたいなので、 気軽に導入できそうです。
また、Uniteではマウス、キーボード、Xbox ONEコントローラが使えるそうです。 XboxONEコントローラは嬉しいですね。
詳しくはこちら
ProBuilderについて
そもそもProBuilderってなに?
使ったことない人はこんな感じだと思います。 私もワークショップ行くまではこんな感じでした。
概要としてはこんな感じ
とりあえず、Unity上でモデリングできちゃうし、遊びながらフィールドマップとか変えて見てレベルデザインもできるみたい!!(※私の解釈)
でも使い方がわからない?
Unityさんから参考資料がたくさん公開されています。 ※Unity Blogからみれます。
モデリング入門動画 これをみればおおよそ使い方はわかると思います。 日本語での解説です。ProBuilder全く触ったことがなくでも、どんなことができるのかわかると思います。
ワークショップのスライド ワークショップのスライドが公開されていました。 モデリング入門動画と同時に見たり、 動画を見た後にこのスライドを見ながら自分で作成してみるといいと思います。
ProBuilderを用いたサンプルプロジェクト github.com ワークショップでのサンプルプロジェクトが公開されていました。 太っ腹じゃないですか...!!!
サンプルプロジェクト動かしてみました。 たしか発案者曰く、マ○オ64とダー○ソウルを組み合わせたイメージだったと思います。
私のすすめかたを考えてみる。
0からなにからゲームを開発するでも、 小物を一つProbuilderで作って見て配置してみるでもいいと思います。
しかし、開発できる時間は限られているので、自分にできるやり方で投稿を間に合わせたいと考えています。
できればスクリプトを書く時間を極力少なくして、ProBuilderを扱う時間に設けたいですよね。
サンプルプロジェクトをガンガン活かそうと思います。
試しに動かしてみるとわかりますが、 Xboxコントローラでキャラクターを動かすスクリプトが入っています。
移動とカメラの操作もできちゃいます。
このプロジェクトのキャラ操作スクリプトをお借りして、 Probuilderでステージを作成する方向にします。
こんな感じで動く床を作成して見たり。
これなら、3Dアクションゲームをなんとか期間内に間に合わせられるかも...。
おわりに
ProBuilderは思ったよりとっつきやすい印象でした。
あと私はUnite Tokyo 2018はお仕事で参加できません。
カナシイナー
Unityでゲームパッドからの入力したいからまとめてみる(XBox One Controller)
はじめに
アクションゲームの設計段階なのに気持ちが先行してコントローラを購入。
— はこね (@hakone_san) April 14, 2018
PCゲームは箱コンがいいと聞きました。 pic.twitter.com/QVmEaO9uFk
...そんなわけで購入しました。
おそらくInput.GetButtonとかInput.GetAxisとかで入力できると思いますが、 入力方法を確かめておこうと思います。
今回の目標
ゲームパッドからUnityに入力できるようになる。
環境
- マイクロソフト ゲームコントローラー 4N6-00003 http://amzn.asia/dyUPVMK
- WIndows10 64bit
- Unity 2017.3.1f1
macの場合はまた異なる設定が必要みたいです。 この記事ではWin10の場合のみです。
結果
できました。
Xbox One Controller (Windows10)
Positive Button | XBox One | 対応 |
---|---|---|
joystick button 0 | A | A |
joystick button 1 | B | B |
joystick button 2 | X | X |
joystick button 3 | Y | Y |
joystick button 4 | LB | 2 |
joystick button 5 | RB | 7 |
joystick button 6 | View | 3 |
joystick button 7 | Menu | 6 |
joystick button 8 | L Stick (押し込み) | 1 |
X-Axis/Y-Axis | L Stick (H/V) | 1 |
joystick button 9 | R Stick (押し込み) | 10 |
4th-Axis/5th-Axis | R Stick (H/V) | 10 |
6th-Axis/7th-Axis | D-PAd (H/V) | 8 |
3rd-Axis | Trigger(L/R) | 11,14 |
絵はこちらから support.xbox.com
以下は動作確認の記録です。
Xbox Oneコントローラのキーの名前の確認
まずはマニュアルの確認。
任意のジョイスティックボタンは"joystick button 0"とかで指定できるみたい。 docs.unity3d.com
入力の確認をしてみる。
スティックやRTなど、Input.GetButtonで取得できなさそうなボタンを除くと 10個あったので、"joystick button 9"まで確認してみます。 HorizontalとVerticalも合わせて確認。
ボタン確認に使用したコード
using System.Collections.Generic; using UnityEngine; public class inputDemo : MonoBehaviour { // Update is called once per frame void Update () { if (Input.GetKeyDown ("joystick button 0")) { Debug.Log ("button0"); } if (Input.GetKeyDown ("joystick button 1")) { Debug.Log ("button1"); } if (Input.GetKeyDown ("joystick button 2")) { Debug.Log ("button2"); } if (Input.GetKeyDown ("joystick button 3")) { Debug.Log ("button3"); } if (Input.GetKeyDown ("joystick button 4")) { Debug.Log ("button4"); } if (Input.GetKeyDown ("joystick button 5")) { Debug.Log ("button5"); } if (Input.GetKeyDown ("joystick button 6")) { Debug.Log ("button6"); } if (Input.GetKeyDown ("joystick button 7")) { Debug.Log ("button7"); } if (Input.GetKeyDown ("joystick button 8")) { Debug.Log ("button8"); } if (Input.GetKeyDown ("joystick button 9")) { Debug.Log ("button9"); } float hori = Input.GetAxis ("Horizontal"); float vert = Input.GetAxis ("Vertical"); if(( hori != 0) || (vert != 0) ){ Debug.Log ("stick:"+hori+","+vert ); } } }
ここまででできなかったこと。
StickとD-PadとLT,RTが見つからない!!!
マニュアルによると、プロパティ設定が必要みたいです。
Input Managerで入力設定
そんなわけでInput Managerを起動。
Edit→Project Settings→Input
デフォルトで18個設定されているようです。(Sizeの値)
先ほどR Stickの入力で使用したHorizontalはこんな設定になっていました。 ※TypeがKey or Mouse Buttonなので、こちらはJoystickのものではないです。
先ほどR Stickの入力で使用したHorizontalはこんな設定になっていました。
L Stick(H/V) , R Stick(H/V) , D-Pad十字(H/V) ,左右トリガ()を新たに設定するため、 7つ設定を追加します。
Sizeを26にして、Nameを変更します。
各種property
L Stick
R Stick
D-Pad
なぜかD-Padだけ上下が逆? よくわかんないけど環境によって異なるのかな。
Trigger
ちょっと特殊でした。 正の値と負の値でRとLが使われていました。
Stick,Dpad,Trigger確認に使用したコード
using System.Collections; using System.Collections.Generic; using UnityEngine; public class inputDemo : MonoBehaviour { // Update is called once per frame void Update () { //L Stick float lsh = Input.GetAxis ("L_Stick_H"); float lsv = Input.GetAxis ("L_Stick_V"); if(( lsh != 0) || (lsv != 0 )){ Debug.Log ("L stick:"+lsh+","+lsv ); } //R Stick float rsh = Input.GetAxis ("R_Stick_H"); float rsv = Input.GetAxis ("R_Stick_V"); if(( rsh != 0 ) || (rsv != 0 )){ Debug.Log ("R stick:"+rsh+","+rsv ); } //D-Pad float dph = Input.GetAxis ("D_Pad_H"); float dpv = Input.GetAxis ("D_Pad_V"); if(( dph != 0 ) || ( dpv != 0 )){ Debug.Log ("D Pad:"+dph+","+dpv ); } //Trigger float tri = Input.GetAxis ("L_R_Trigger"); if( tri > 0 ){ Debug.Log ("L trigger:"+tri ); }else if( tri < 0 ){ Debug.Log ("R trigger:"+tri ); }else{ Debug.Log (" trigger:none" ); } } }
補足
マニュアルより、プロパティはこんな感じです。 stickやtriggerからの入力が0,1しかできないとかはここで調整します。
property | 説明 |
---|---|
Name | 入力軸の名前。 |
Descriptive Name | スタンドアロンビルドで 設定 ダイアログ の Input タブで表示される正の値の名前。 |
Descriptive Negative Name | スタンドアロンビルドで 設定 ダイアログ の Input タブで表示される負の値の名前。 |
Negative Button | 軸を負の方向に押すためのボタン。 |
Positive Button | 軸を正の方向に押すためのボタン。 |
Alt Negative Button | 軸を負の方向に押すための代わりのボタン。 |
Alt Positive Button | 軸を正の方向に押すための代わりのボタン。 |
Gravity | 何もボタンが押されてない場合に軸がニュートラルになるための秒速。 |
Dead | 絶対値がこの数値未満の場合は 0 として処理されます。ジョイスティックに便利です。 |
Sensitivity | 軸がターゲットの値に向かうための秒速。これはデジタルデバイスにのみ向いています。 |
Snap | これを有効化すると、軸の値は、ボタンを反対方向に押したときに、0 にリセットされます。 |
Invert | これを有効化すると、Negative Buttons は正の値に反転し、Positive Buttons は負の値に反転します。 |
Type | 軸を制御する入力の種類。 |
Axis | 軸を制御するために接続されたデバイスの軸。 |
Joy Num | 軸を制御する接続されたジョイスティックの数。 |
おわりに
joystick button 0とかもInputManagerで名前を付けたほうが使いやすそうですね。
triggerの同時押しの場合はいまだにわかっていません。
同時に押したら値は0になる?
いろいろ検証してみないとですね。
箱コンかっこいい....
参考にさせていただいたサイト
Railsで作成したアプリをHerokuで公開するメモ(SourceTree使用)
はじめに
前回、ローカル環境でRailsの環境構築を確認しました。 今回は、Railsで作成したアプリをHerokuで公開する方法を確認します。
今回の目標
herokuにデプロイし、URLにアクセスして表示を確認する。
前提
Herokuのアカウントは取得済み
デプロイするRailsアプリの作成
ローカル環境でデプロイするRailsアプリを作成します。 自分で編集したviewがデプロイされていることがわかるように、 簡単にtopページを作成します
mkdir heroku_demo cd heroku_demo rails new heroku_demo_app rails generate controller home top
topページを編集します。 heroku_demo_app/app/views/home/top.html.erbを開き、 下記のように編集しました。
<!-- template <h1>Home#top</h1> <p>Find me in app/views/home/top.html.erb</p> --> <h1>herokuにデプロイする方法を確認するよ!</h1> <h2>ホームページに飛んでみるよ</h2> <%= link_to("はこねのはこ","https://hakonebox.hatenablog.com/") %>
ローカルサーバを立ち上げ、topページの確認をします。
rails server
アクセスして見ましょう。 localhost:3000/home/top
表示が確認できました。
home/topをつけなくでもこのページが表示できるように、routesファイルの変更をします。
#Rails.application.routes.draw do # get 'home/top' #end Rails.application.routes.draw do get "/" => "home#top" end
これでlocalhost:3000にアクセスした時に、 topページを表示できるようになりました。
herokuにアプリケーションを作成する。
NEWからアプリケーションの作成をします。
Open appをクリックします。
アプリが作成できたようです。
Gemfile,databaseの編集
RailsはデフォルトでSQLiteを使用しているようですが、HerokuではPostgreSQLを使用するようです。
database.ymlの編集
production: url: <%= ENV['DATABASE_URL'] %> # <<: *default # database: db/production.sqlite3
Gemfileの編集
gem 'sqlite3' , group: [:development, :test] gem 'pg' , group: :production
途中エラーが出てしまいました。
An error occurred while installing pg (1.0.0), and Bundler cannot continue. Make sure that `gem install pg -v '1.0.0'` succeeds before bundling.
Can't find the 'libpq-fe.h header
libpq-fe.hが見つからないようです。
brew install postgresql
すると checking for tclConfig.sh... no configure: error: file 'tclConfig.sh' is required for Tcl と出ました。
brew install tcl-tk
A formula for tcl-tk might have been added recently.
Run brew update
to get the latest Homebrew updates!
と出ました。
brew updateを実行しましたが、
brew update
Error: /usr/local must be writable!
ぐぬぬ。
こちらのサイトを参考にさせていただきました。
サイドbrew updateを実行して待つこと約30min.... やったか!?と思ったらまた次のエラー Error: update-report should not be called directly!
brew updateの前に、brew upgradeが必要みたいです。
brew upgrade brew update
うまくいったようです。
再度
brew install tcl-tk brew install postgresql bundle install
いけました! ここまで長かった...。
rails serverで起動して、ローカルでの動作ができました。
しかしゴールではない.....。
SourceTreeの設定
SourceTreeを開きます。 新規から既存のローカルリポジトリを追加を選択
リモートを追加を選択 必須情報にリモートの名前とURL/パスを設定します。 URLはHerokuのSetting→Infoに記載されています。
デプロイする
そしてプッシュ
開いてみる。
HerokuからOpen appで開きます。 ひらけました。
やったああああああああああああああああ!!!!!!! やりました。
さいごに
Sourcetreeからならいらない操作あったんじゃないかな... あとmacbookの環境構築はいまだにわからないことが多いです。
なんとかデプロイまで進めたのでよかったです。
途中心くじけそうになって相談させていただきました。 naichiさんありがとうございます。 blog.naichilab.com
A build only device cannot be used to run this targetのエラーが場合
はじめに
ほぼ一年ぶりにXcodeをビルドして、実機デバッグしようとしたら、 A build only device cannot be used to run this targetというエラーが出たので 対処方法をメモしておきます
環境
対処方法
Simulatorを開く Xcode→Open Developer→Simulatorでシミュレータを起動します。 iPhone XのSimulatorが立ち上がりました。 Xcodeのアップデートで設定が変わってしまったのでしょうか?
使用する機種を選択する HardWare→Device→iOS x.x→iPhone SE iPhone SEのSimulatorが立ち上がりました。 しばらく見ない間にデザイン変わってますね。
実機でアプリをタップしてみる
信用されていないデベロッパと出てしまいました。
設定→一般→プロファイルとデバイス管理→デベロッパAPP ここから信用しましょう。
できました。
無事実機でデバッグできました。
ARkitを試してみました。
— はこね (@hakone_san) 2018年3月29日
すごい簡単だった。
たぶん作業時間より、ビルドの時間の方が長い...
それくらい写すだけなら簡単でした。 pic.twitter.com/SsPYIAGrmW
Ruby on Railsの環境構築メモ
はじめに
2018年に入ってからprogateでRailsを学習をはじめ、
ようやく全学習コースと道場コースを終えることができました。
progateのRails終わりました。
— はこね (@hakone_san) 2018年3月21日
すごい難しかった。 pic.twitter.com/947ooGydTg
ただ、まだまだ身についていないと思うので、Railsでなにかしら作ってみようと思います。
以前、Rubyを独学で進めようとしていた時に、 ある程度PCに環境構築を進めてはいたのですが、
どこまで、どんな設定がしてあるのか全く覚えていないので、 その辺を確認しながらRailsの環境構築を進めようと思います。
私の環境での確認となるため、Railsのインストールの説明の記事ではありません。
今回の目標
localhost:3000でYay!する。
環境
- macOS High Sierra 10.13.3
- MacBook Pro (Retina, Mid2012)
rbenvの確認
開発するプロジェクト毎にRubyやRailsのバージョンを切り替えることができるようになります。
rbenv -v
rbenv 1.0.0
インストールしてました。
Rubyの確認
rbenv versions system 2.2.3 2.3.1 * 2.4.1 (set by /Users/Hakone/.rbenv/version)
2.4.1に設定してありました。 progateのRubyのバージョンが2.4.1なので合わせていた記憶があります。
※使用するRubyバージョンを切り替えるメモ
rbenv local 2.4.1
Railsの確認
rails -v
Rails 5.1.4
Railsもインストールされてましたね。
サーバの立ち上げまで確認
動作確認用のフォルダの作成、Railsアプリの作成、サーバの起動を行います。
mkdir demo cd demo rails new testsrv rails server
ブラウザでlocalhost:3000にアクセスしてみます。 Yay!できました。わーい。
おわりに
過去の自分が環境を立ち上げてくれていたので、 ここまで特に問題ありませんでした。
そういえば、たしかここまで作成したものの、何していいのかわからなかったのでprogateはじめたような気がしてきました。
一人でもテニスができるようにUnityでVRテニスゲームを作りたいねこ[1]
はじめに
今回もラケットの代わりにフライパンが出てきますが、
心の目で見ればテニスラケットです。
前回の進捗はこちら。
steamVRのプラグインを導入して、Unity上でHMDの検出、コントローラの検出を行いました。
しかし、Physic MaterialでBouncinessを調整しただけでは、 コントローラをラケットのように振った場合、うまく飛ばないという結果になりました。
くやしい
のでなんとか前に飛ばしたいです。
今回の目標
コントローラーをテニスラケットのようにスイングし、 当たったボールを前に飛ばす。
作戦
Addforceでボールに瞬間的な加速を与えようと思います。 イメージはこんな感じ。
上が前回で下が今回。 認識間違えてたらごめんなさい。
AddForceとは
Rigidbodyに力を加えます。
public void AddForce (Vector3 force, ForceMode mode= ForceMode.Force);
パラメータ | 説明 |
---|---|
force | ワールド座標における力のベクトル |
mode | 適用する力のタイプ |
力は、アクティブのRigidbodyに対してのみ適用することができ、GameObjectが非アクティブに場合は効果がないようです。
続いてmodeを確認します。
mode | 説明 |
---|---|
Force(default) | 質量を使用して、Rigidbodyへ継続的な力を加えます。 |
Acceleration | その質量を無視して、Rigidbodyへ継続的な加速を追加します。 |
Impulse | その質量を使用し、Rigidbodyに瞬間的な加速を追加します。 |
VelocityChange | 質量を無視して、Rigidbodyに瞬間的な加速を追加します。 |
ForceModeを指定しないとForceになるようです。
そんなわけでImpulseでボール撃つぞ!!!
スクリプトリファレンスはこちら
実装
ラケットのIsTriggerをONにして、ラケットのColliderを当たり判定のみにします。
適当に書きます。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Shot : MonoBehaviour { public GameObject Ball; //ボール public float speedZ = 10f; //スピード public float speedY = 3f; //ボールに当たった場合 void OnTriggerEnter(Collider col) { if(col.tag == "Ball") { Vector3 Force; Force= new Vector3(0,speedY,speedZ); Ball.GetComponent<Rigidbody>().AddForce(Force,ForceMode.Impulse); } } }
ラケットにアタッチしてみましょう。
打てました。
フルスイングしても大丈夫でした。 すごく見にくいですが、ボールを飛ばせました。
課題
- 当たれば飛ぶってコードなので、実用性ある形に落とす
- ラケットのスイングスピードで与える力を変えられるように
- ボールが見にくいのでオーラをまとわせるなりなんなりで目立たせる
- フルスイングすると部屋が壊滅しかねないくらい危険
- 打つ角度を狙えるようにする
さいごに
課題はできましたが、 前に飛ばせたので、今日の分は満足です。