Unity入門 - 超簡易版ビリヤード -

今回は、超簡易版のビリヤードを作ってみました。
Unityの物理エンジンを使えば、とても簡単に作ることができました。
(といってもゲーム性はほぼないですが。)

今回のビリヤートの概要は
スクリプトC#で作成
・カメラは、打つボールから一定距離を保ち、ボールを追跡する
・左右の矢印キーで打つ方向を操作
・スペースキーで打つ強さを操作(長押しで強くなる)

WebPlayer

手順

1. 盤面(Plane)を作成

2. 打つボール(Sphere)を作成

3. 周囲の枠(Cube)を作成
作成した枠にRigidbodyを追加し剛体特性を組み込む

4. ボール(Sphere)を10個作成する。
作成したボールにRigidbodyを追加し剛体特性を組み込む

5. 2,3,4で作成したHierarchyにPhysicsMaterialを適用し、物理特性を組み込む

6. 2で作成した打つボールに割り当てるスクリプトを作成

using UnityEngine;
using System.Collections;

public class rigidscript : MonoBehaviour {

	float dgr = 0;
	int power = 0;

	// Use this for initialization
	void Start () {
	
	}
	
	// Update is called once per frame
	void Update () {
		Vector3 pos = transform.position;

		// スペースキー操作
		if (Input.GetKeyDown(KeyCode.Space)) {
			power = 0;
		}
		if (Input.GetKey(KeyCode.Space)) {
			power++;
		}
		if (Input.GetKeyUp(KeyCode.Space)) {
			Vector3 v = Camera.main.transform.position;
			v -= pos;
			v *= power * -1;
			v.y = 0;
			transform.rigidbody.AddForce (v);
		}

		// 矢印キー操作
		if (Input.GetKey(KeyCode.LeftArrow)) {
			Camera.main.transform.RotateAround (pos, new Vector3(0, 10, 0), -0.1f);
			dgr += 0.1f;
		}
		if (Input.GetKey(KeyCode.RightArrow)) {
			Camera.main.transform.RotateAround (pos, new Vector3(0, 10, 0), 0.1f);
			dgr -= 0.1f;
		}

		// カメラの新たな位置の計算と設定
		float d = (2 * Mathf.PI) * (dgr / 360);
		float x = Mathf.Sin (d);
		float y = Mathf.Cos (d);
		x *= 10f;
		y *= 10f;
		pos.x += x;
		pos.y += 10f;
		pos.z -= y;
		Camera.main.transform.position = pos;
	}
}


今回は、物理エンジンの使い方や、キーボード操作がメインで
得点、時間制限などゲーム性がほぼ実装されていないので、今後、機能追加していこうと思います!

Unity入門 - Unityとは -

最近、話題に上がっているUnityを勉強中なので
Unityについての投稿です!

Unityとは

Unityとは、ユニティ・テクノロジーズ社が提供するゲーム開発プラットフォーム。
Unityには無料版と、有料版がありますが、簡単な3Dゲームなら無料版でも十分作れます。
また、マルチプラットフォームに対応しており、開発したゲームは
WindowsMacLinuxiOSAndroid
コンソールゲーム(PlayStaion、VitaXboxWii
に展開可能です。

無料版と有料版の違い

有料版のみで可能な項目としては

・アプリケーションのスタート時、Unityスプラッシュスクリーン変更
・Mecanim機能の内高度な機能(IKなど)
・ネイティブプラグイン
・Navmesh、Pathfinding(キャラクターを地形の形状を考慮して移動を行わせる機能)
・LOD(Level of Detail)
・プロファイル、GPUプロファイリング
・高度なグラフィック機能

詳しくは「ライセンスのご案内」を参照

使える言語

JavaScript

ブラウザなどに用意されているJavaScriptとは文法などが微妙に異なり
独自の言語に近い形になっている。別名「UnityScript」と呼ばれたりする。

C#

主にWindowsの開発で用いられる言語。
.net対応のソフトを開発するのに作られたもの。

Boo

Pythonという欧米で広く使われている言語に似た言語。

Unityゲーム紹介の動画

インストールとライセンス登録について

Unityダウンロード

上記のリンクから無料でダウンロード可能です。

Unityをインストールするにはライセンス登録が必要になりメールアドレス登録が必要です。
ソフトウェアを販売する「ストア」や、データ類を販売する「アセットストア」
にてアカウントが必要になります。


今回はUnityの概要についてでしたが、次回からは簡単なゲームを投稿してみようと思います!

PHPフレームワーク Laravel4 インストール

最近、話題のPHPフレームワークのLaravel4をCentOS
インストールしてみた

Laravelの概要

Laravelは、ここ最近急激に人気を伸ばしてきた、欧米で人気のPHPフレームワーク
特徴は、「コードが読みやすく、書きやすい」とのこと。
まあ実際にインストールして、触ってみるのが一番なので
今回はインストールまでの手順をまとめました。

環境
OS CentOS release 6.5
PHP 5.4.14
laravel 4.1.24
Apache 2.4.4

PHP 5.3以上の必要あり

Composer インストール

Composerとは、アプリケーションが必要とする外部ライブラリを
そのアプリケーション固有の状態で一元的に管理してくれるツール
RubyでいうところのBundler的な位置づけ。

curl -sS https://getcomposer.org/installer | php
Project 作成

今回は分かりやすいように「laravel4」というプロジェクト名で作成

php composer.phar create-project laravel/laravel laravel4 --prefer-dist

実行したディレクトリ配下に「laravel4」が作成される

ls -la laravel4/

.gitattributes
.gitignore
CONTRIBUTING.md
app
artisan
bootstrap
composer.json
composer.lock
phpunit.xml
public
readme.md
server.php
vendor
とりあえず Git に追加
cd laravel4
git init
git add .
git commit -a -m 'laravel4 first commit'
Configの日本時間、日本語設定
vi app/config/app.php

-       'timezone' => 'UTC',
+       'timezone' => 'Asia/Tokyo',
-       'locale' => 'en',
+       'locale' => 'ja',
Apacheの設定

public以下の.htaccessがうまく動作しなかったので
.htaccessコメントアウトして、apacheのconfに下記を追加

laravel4プロジェクトのルートディレクトリは仮で「/var/www」

<VirtualHost *>
    ServerName ***

    DocumentRoot /var/www/laravel4/public

    <Directory /var/www/laravel4/public>
        RewriteEngine on
        RewriteCond $1 !^(index\.php)
        RewriteRule ^(.*)$ /index.php/$1 [L]

        Require all granted
        Options All -Indexes
    </Directory>
</VirtualHost>
アクセス確認

設定したURLにアクセスして下記画像が表示されたら
インストールからApacheの設定は完了!

f:id:hiro1986:20140320162739p:plain


今回はインストールからApacehの設定まででしたが
他のフレームワークとの比較しながら、パフォーマンス測定や
簡単なページ作成を後々やってみようと思います。


参考サイト

Laravelクイックスタート
はじめてのLaravel

Gitlab6.0のインストール

前回のRedmineに引き続き、Gitlab6.0をインストールしてみました。

Gitlabを使えば、GitHubのようなサービスを社内などのクローズドな環境で運用できます。


環境はこちら

OS CentOS release 6.5
Ruby 1.9.3-p484
Mysql 5.1.72
Git 1.8.5.2
Gitlab 6.0
Mysqlにユーザー追加
CREATE USER gitlabhq@localhost IDENTIFIED BY '****';
CREATE DATABASE gitlabhq_production;
GRANT ALL PRIVILEGES ON *.* TO 'gitlabhq'@'localhost' IDENTIFIED BY '****' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Gitユーザーを追加
adduser --comment 'GitLab' --create-home --home-dir /home/git git

mkdir /home/git
chown git:git /home/git
sudo -u git -H mkdir /home/git/.ssh
sudo -u git -H touch /home/git/.ssh/authorized_keys
sudo -u git -H chmod 700 /home/git/.ssh
sudo -u git -H chmod 600 /home/git/.ssh/authorized_keys
sudo -u git -H git config --global user.name  "GitLab"
sudo -u git -H git config --global user.email "gitlab@localhost"
Gitlab Shell のセットアップ
cd /home/git
rbenv local 1.9.3-p484
sudo -u git -H git clone https://github.com/gitlabhq/gitlab-shell.git
cd /home/git/gitlab-shell
sudo -u git -H git checkout -b 1.7.0 v1.7.0
cp -p config.yml.example config.yml
vi config.yml
============
gitlab_url など適時修正
============
sudo -u git -H ./bin/install
Gitlab のセットアップ
cd /home/git
sudo -u git -H git clone https://github.com/gitlabhq/gitlabhq.git gitlab
cd /home/git/gitlab
sudo -u git -H git checkout 6-0-stable
sudo -u git -H mkdir /home/git/gitlab-satellites
sudo -u git -H mkdir tmp/pids/
sudo -u git -H mkdir tmp/sockets/
sudo -u git -H mkdir public/uploads
cp -p config/gitlab.yml.example config/gitlab.yml
cp -p config/unicorn.rb.example config/unicorn.rb
cp -p config/database.yml.mysql config/database.yml
vi config/gitlab.yml
vi config/unicorn.rb
vi config/database.yml
============
url, port, database など適宜修正
============
GEMで各種インストール
cd /home/git/gitlab
sudo -u git -H bundle install --deployment --without development test postgres aws --path vendor/bundler
テーブル作成
sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production

初期ユーザー
============
login.........admin@local.host
password......5iveL!fe
============
起動スクリプトのセットアップ
curl --output /etc/init.d/gitlab https://raw.github.com/gitlabhq/gitlabhq/6-0-stable/lib/support/init.d/gitlab
chmod +x /etc/init.d/gitlab
起動
/etc/init.d/gitlab start
Gitlabの確認
cd /home/git/gitlab
sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production --trace


以上です。

Redmine2.4.1のインストール

Redmineとは、Ruby on Railsで開発されている、Webベースのプロジェクト管理ソフトウェア。

プロジェクトのタスク管理、進捗管理、情報共有が行えて
Gitなどのバージョン管理システムとの連携もできます。

環境はこちら

OS CentOS release 6.5
Ruby 2.0.0-p353
Mysql 5.1.72
Redmine 2.4.1
MysqlにRemine用のユーザーを追加
create database db_redmine default character set utf8;
grant all on db_redmine.* to redmine@localhost identified by '****';
flush privileges;
ソースを取得
cd /usr/local/src
wget http://www.redmine.org/releases/redmine-2.4.1.tar.gz
tar zxvf redmine-2.4.1.tar.gz -C /usr/local/
設定ファイルの変更
cd /usr/local
cp -p config/database.yml.example config/database.yml
vi config/database.yml
=======
database: db_redmine
username: redmine
password: ****
=======

cp -p config/configuration.yml.example config/configuration.yml
vi config/configuration.yml
=======
※ MAILの設定など適時修正
=======

vim Gemfile
=======
gem "passenger"
=======

※ passenger standalone で起動したかったので追加
GEMで各種インストール
rbenv local 2.0.0-p353
bundle install --without development test --path vendor/bundler
マイグレーションと初期設定
bundle exec rake generate_secret_token
RAILS_ENV=production bundle exec rake db:migrate
RAILS_ENV=production bundle exec rake redmine:load_default_data
passenger standalone で起動
RAILS_ENV=production bundle exec passenger start


Redmineには便利なプラグインがたくさんあるので
色々試してみたいと思います!


以上です。

Webistranoのインストール

WebistranoはCapistranoのWebフロントエンドで
ブラウザからCapistranoを実行できます。

主にこののような使い方ができます。

  • 複数プロジェクトの管理
  • レシピの管理、共有
  • デプロイ履歴の管理
  • 各環境の設定(dev, test, prod 等)
  • ロールバックが可能

以下にインストールからブラウザでアクセスするまでを記載します。

rbenvでruby 1.8.7をインストール
rbenv install 1.8.7-p374

ruby複数バージョンを利用したかったので rbenv でインストールしました。

Webistranoダウンロード
// git から clone
git clone git://github.com/peritor/webistrano.git

// 設定ファイル
cd webistrano
rbenv local 1.8.7-p374
cp -p config/webistrano_config.rb.sample config/webistrano_config.rb
cp -p config/database.yml.sample config/database.yml
vi config/database.yml
==================
database, username, password, socket
を適宜修正
==================

// 特定のページでエラーになるので、deployer.rbを一部修正
vi lib/webistrano/deployer.rb
==================
# 25行目
# if(@deployment.task && !@deployment.new_record?)
if(!@deployment[:task].nil? && !@deployment.new_record?)
==================
Gemfileを修正
vi Gemfile
==================
#gem "rake"
gem "rake", "0.8.7"
==================

※最新のrakeだとrakeコマンドが動作しない。dbのmigrateでこけました・・・

gem で各種インストール
gem install bundler -v 1.0.10
bundle install --path vendor/bundler
DB のマイグレーション
// database追加
create database webistrano_development;
create database webistrano_test;
create database webistrano_production;

// maigrate
RAILS_ENV=development bundle exec rake db:migrate
RAILS_ENV=test bundle exec rake db:migrate
RAILS_ENV=production bundle exec rake db:migrate
webistrano 起動
ruby script/server -p 3000 -e production

iptableで3000番ポートを開放してあげて、下記URLをブラウザからアクセス

http://[hostname or ipaddr]:3000
ハマったポイント

最初はrubyのバージョンを1.9.3でインストールしようとしましたが
mysql/rubyruby1.9の「M17N」に対応していないので、データベースから取得した文字列が全て「ASCII-8BIT」になってしまい、日本語入力がうまくいかなかった。

incompatible character encodings: UTF-8 and ASCII-8BIT

rubyのバージョンを1.8.7に落として対応しました。


以上です。

オライリーの入門viを読んでみた

久しぶりのブログ更新。

僕は普段、PHPPerlなどサーバサイドの言語をコーディングするときは
viを常用しています。

で、HTMLやJSなどフロントサイドの言語は、サクラエディタを使ってます。
ガラケーのサービスを運用しているときに、「i絵文字」(懐かしいなぁ)
とか使っていて、viだと何かと融通がきかなかったので。

viを使って3年くらい経つのですが、いまさらですがオライリーの入門vi
を読んでみました。

入門 vi 第6版

f:id:hiro1986:20131121145016g:plain

構成はこんな感じ

1章 テキストエディタ
        1.1 ファイルのオープンとクローズ
        1.2 編集をセーブせずに終了するには

2章 基本的な編集作業
        2.1 viのコマンド
        2.2 カーソルの動かし方
        2.3 簡単な編集
        2.4 テキストを入力するいろいろな方法
        2.5 Jによる2行の連結
        2.6 viの基本コマンドのまとめ

3章 素早くジャンプする方法
        3.1 画面単位でのジャンプ
        3.2 テキストブロック単位でのジャンプ
        3.3 検索によるジャンプ
        3.4 行番号によるジャンプ
        3.5 viの移動コマンドのまとめ

4章 viの中級コマンド
        4.1 コマンドの組み合わせ
        4.2 viの起動オプション
        4.3 バッファの活用
        4.4 位置のマーク
        4.5 もっと高度な編集作業について
        4.6 viのバッファ/マーク関連コマンドのまとめ

5章 exエディタ
        5.1 exコマンド
        5.2 exによる編集
        5.3 ファイルのセーブと終了
        5.4 別のファイルの読み込み
        5.5 複数ファイルの編集

6章 一括置換
        6.1 置換の確認
        6.2 文脈依存置換
        6.3 パターンマッチングルール
        6.4 パターンマッチングの実例
        6.5 パターンマッチングの完全マスター

7章 viの高度な使い方
        7.1 viのカスタマイズ
        7.2 UNIXコマンドの実行
        7.3 キー入力節約用コマンド
        7.4 exスクリプトの使い方
        7.5 ソースコードの編集

8章 vim - vi Improved
        8.1 作者と歴史
        8.2 おもなコマンドライン引数
        8.3 オンラインヘルプとその他のドキュメント
        8.4 初期化
        8.5 マルチウィンドウ編集
        8.6 GUIインターフェイス
        8.7 拡張正規表現
        8.8 改善された編集機能
        8.9 プログラミング支援機能
        8.10 ユニークな特色
        8.11 対応するオペレーティングシステムソースコード

1~5章はおさらい的な感じですらすら読めて
こういうコマンドもあったんだと、新たな発見も多々ありました。

個人的には8章のvimに関しての内容が一番面白かったです。
これを期に vimrc を綺麗に整えようと思います。

たまに使うけど忘れがちなコマンドをメモ。

画面分割

:sp  画面を上下に分割
:vsp 画面を左右に分割

Ctrl-w 画面間の移動
Ctrl-w k 上の画面に移動
Ctrl-w j 下の画面に移動
Ctrl-w l 右の画面に移動
Ctrl-w h 左の画面に移動

Ctrl-w + カーソルのある画面を一行分大きくする
Ctrl-w + カーソルのある画面を一行分小さくする
Ctrl-w = 画面のサイズを同じにする

UNIXコマンドを使用

:! command

ex) :! ls
    :! pwd

あと、折り畳みに関して本に書いてなかったのでメモ

zi	折り畳みの有効無効の切り替え
zf	折り畳みを作成する
za	折り畳みの開け閉め
zd	折り畳みを削除する

zA	折り畳みの開け閉め(再帰)
zD	折り畳みを削除する(再帰)
zE	全ての折り畳みを削除
zR	全ての折り畳みを開く
zM	全ての折り畳みを閉じる

これからvi使いたい、vi使ってるけど知らない機能がたくさんある
って人にはおすすめの本であると思います!!