Easy Coding

ノートみたいなもの。

【Enthought Canopy】セットアップしてみた【Windows8.1】

こんにちは

せっかくpythonの入門のお勉強をしたので、データ扱い用にライブラリを取り入れてみようと思います

この記事を見ている人もpythonをデータサイエンス的に扱おうというい人、多いんではないかな?

今回は、「Enthought Canopy」をインストールすることで、

NumPy(行列を扱う数値計算用のライブラリ)、

SciPy(科学計算用のライブラリ)、

matplotlib(グラフ描画用のライブラリ)

などを一度に取り入れることができるようです。しかもExpress版が無償。

わくわくする。





今回は、その導入をWindows8.1の上で行っていきたいと思います。


まずは、

www.enthought.com

こちらへアクセスして、

f:id:easyCoding:20160411173602j:plain

赤く丸した「Get Canopy」をクリックします。

そして、飛んだ先でさらに

f:id:easyCoding:20160411174519j:plain


赤く丸した「Download」をクリックします。

そしてさらに、

f:id:easyCoding:20160411175203j:plain

ここをクリックするとセットアップウィザードがダウンロードされます。

そこからはセットアップを起動して、表示されるテキストに(一応)目を通しながら

Next→I accept...にチェック→Next→Next→Install(暫く待つ)→Finish

でオッケー!

すると環境設定が出てくるので、

Continue(暫く待つ)→起動する!

手順通りにやっていればデスクトップ画面にショートカットができているはずです。

これで導入はできました

次回から、これを使って何ができるのか試していこうと思います

【Unity】オブジェクトの角度を扱う方法についての備忘録【スクリプト】

こんにちは

Unityでローカルな角度を保持したまま目標物へ向けてオブジェクトを回転させたり、弧度法で範囲指定をして、それ以上は回転させない、という挙動を実装するスクリプトについての解説です。

例えば、村人が主人公の方を振り向く首の動きなどに実装できそうですね

public var target : GameObject;//振り向く対象
public var angle : float;//左右に振り向いていい角度の範囲

function Update(){

   //まず目標の方向を向く
   this.transform.LookAt(scr.target.transform.position);

   if(this.transform.localRotation.y >= angle){//もしも振り向きすぎなら
      this.transform.localRotation.y = angle;//最大値に抑えてやる
   }else if()(this.transform.localRotation.y <= -angle){//もしも逆に振り向きすぎなら
      this.transform.localRotation.y = -angle;//最小値に抑えてやる
   }


これにて、村人が映画「エクソシスト」のように首を180度回転させるという恐怖を防ぐことができそうですね^^

今回はこれにて終了です

広告


【Unity】弾丸のスクリプト【JavaScript】

今、シューティングゲームを作っているんだが、結構便利そうな「弾」のスクリプトが作れたのでメモしておく

#pragma strict

public var forEnemy : boolean;//敵に対してダメージになるか
public var forHero  : boolean;//プレイヤや味方に対してダメージになるか

public var effect : GameObject;//着弾エフェクト

public var damage : float;//ダメージの値
public var shock : float;//蓄積する怯み値
public var speed : float;//弾速(5~100)
public var range : float;//射程(2~100)
public var chase : float;//追尾の回転力(1~20)

private var timer : float;//射程限界のタイマー

public var target : GameObject;//Muzzle側のscriptから指定

function Start () {
	timer = 0.0f;//タイマー初期化
}

function Update () {
	this.transform.Translate(0,0,speed*Time.deltaTime);//指定され方向に弾が飛んでいく

	//ターゲットに向けて少しずつ回転
	this.transform.rotation = Quaternion.Slerp(
		this.transform.rotation, 
		Quaternion.LookRotation(target.transform.position - this.transform.position), 
		chase*Time.deltaTime);

	timer += Time.deltaTime;//弾の存在時間カウント
	if(timer >= (range/speed)){//射程限界超えたら
		Destroy(this.gameObject);
	}
}

function OnTriggerEnter(hit : Collider){//敵に当たったら消える
	var enemyAcount :Account;//敵のアカウント
	var efNow : GameObject;//着弾エフェクト

	if(forEnemy==true && hit.gameObject.tag == "Enemy"){//damageを与えたい敵に当たったら
		enemyAcount  = hit.gameObject.GetComponent("Account");//敵のアカを取得
		//ダメージ
		enemyAcount.data -= damage * (enemyAcount.defence + enemyAcount.defenceSupport );
		//ここに衝撃計算も

		//着弾エフェクト
		efNow = GameObject.Instantiate(effect);
		effect.transform.position = this.target.transform.position;
		Destroy(this.gameObject);//弾を消す

	}else if(forHero==true && hit.gameObject.tag == "Player"){
		enemyAcount = hit.gameObject.GetComponent("Account");//敵のアカを取得
		//ダメージ
		enemyAcount.data -= damage * (enemyAcount.defence + enemyAcount.defenceSupport );
		//ここに衝撃計算も

		//着弾エフェクト
		efNow = GameObject.Instantiate(effect);
		effect.transform.position = this.target.transform.position;
		Destroy(this.gameObject);//弾を消す
	}

	if(hit.gameObject.tag == "Wall"){
		//着弾エフェクト
		efNow = GameObject.Instantiate(effect);
		effect.transform.position = this.transform.position;
		Destroy(this.gameObject);//弾を消す
	}
}

基本的にスクリプト内で定義されていないものは発射のInstantiate()を呼び出す側のスクリプトから呼び出して使う感じで




【Unity】List構造を扱う【JavaScript】

今回は趣味でやっている(趣味以外何もしていないが......)Unityで、List構造を使おうと思ったので

やっていきます

言語はjavascriptです

private var myList = List.<int>();

実行結果が......

Unknown identifier: 'List'

「そんな型知らないよ、できないよ」と言われてしまいました......

そこで、ググってみた結果、

private var myList = new System.Collections.Generic.List.<int>();

これで実行できます

UnityScriptでは本来C#扱いとなっているのかな? Generic系の型を扱いますよー、という宣言を加えてオブジェクト生成してやれば使えるようです

ひとまず宣言で来て安心

では、できることをどんどん確認していきましょう

myList.Add(1);//リストの末尾に新しい要素を入れる
var count : int = myList.Count;//要素数をカウントする
myList.Remove(1);//特定の要素をリストから消す。これは検証した結果、一度に消すのは一つのみ(?)のようで、例えばリストに沢山の1が入っていても要素番号の小さいほうの値が一つ消えるのみのようです。変な挙動なのであまり使わない方が良いかも
myList.RemoveAt(0);//n番目の要素を削除する

ちなみに、要素数を超える番目の値を要求するとエラーが帰ってきます

ArgumentOutOfRangeException: Argument is out of range.

今回はぼくが使う範囲でここまで

宣言がすこし変わっていたのでそのメモということで

ググればもう少し色々な活用法が見つかると思います




今回の参考サイト様:
tanku.hatenablog.jp