2014年9月29日月曜日

Unity スクリプトから基本オブジェクトの作成

四角や丸などプリミティブオブジェクトをC#スクリプトから作成。
位置、サイズ、色、コンポーネントの指定。

色やサイズの異なるブロックを大量に配置する際に使います。
基本オブジェクトはプレファブとは違い。マテリアルなどのコンポーネントが共有されません。

//四角のオブジェクトを作成
インスタンス画像 GameObject cube1 = GameObject.CreatePrimitive(PrimitiveType.Cube);
cube1.renderer.material.color = new Color(0.5f ,0.2f,0f);
cube1.transform.Translate(10.5f,0.5f,0f);
cube1.transform.localScale= new Vector3(3,0.01f,3);
cube1.AddComponent("Move");//スクリプトの追加

UNITYで画面サイズをオブジェクト幅に合わせる

オセロや将棋盤を画面いっぱいに表示する場合のサンプルソース

・前提
メインカメラは上から盤面を見下ろす
例 positon(0,15,0) rotation(90,0,0)
盤の表面は座標 x0,y0を中心にする



using UnityEngine;
using System.Collections;

public class gamen : MonoBehaviour {

void Start () {
Camera cam = Camera.main;
float nFocalLength = focalLength (cam.fieldOfView, 10.0f);//盤の幅
cam.transform.position = new Vector3(transform.position.x, nFocalLength, transform.position.z);
}
float focalLength (float fov, float aperture) {
float nHalfTheFOV = fov / 2.0f * Mathf.Deg2Rad;
float nFocalLength = (0.5f / (Mathf.Tan (nHalfTheFOV) / aperture));
nFocalLength *= ((float)Screen.height / (float)Screen.width);
return nFocalLength;
}
}


2014年9月6日土曜日

通信制限のないスマホ

現在のところ、通信制限のないスマホはauの+WIMAXプランしかありません。
+WIMAXプランはWIMAX対応の携帯のみで使用できます。※スマホでWIMAXをオンにするだけ

WIMAX対応の携帯は2年以上昔の端末のみです。WIMAX2とは違います
スマホ以外にもモバイルデータサービスで通信制限が無いのは同じくWIMAXだけです。
なぜWIMAXだけ帯域制限が無いのかというと。3G,LTE,WIMAX2は同じ規格ましくはインフラを使用しているようで、WIMAXだけ別の回線を持っているからです。

・WIMAXのメリットデメリット

メリット
通信制限が無いことくらいです。

デメリット
2018年にサービスが終了します。
電波が入りにくい。
WIMAX対応のROMは古いバージョンしかありません。

・WIMAX対応スマホ

HTC EVO WIMAX、HTCJ、3Dなど2年以上前の機種のみ
中古品を購入するしかありません。
HTCの機種なら3000円から購入可能です。

2014年8月14日木曜日

簿記試験用の電卓

おすすめの電卓画像実務や簿記試験におすすめの電卓。
SHARP 12桁電卓 EL-N412K-X
千円以下で購入できて連打と静音性にも優れています。
日商簿記試験や会計経理系の資格試験に使用できます。

簿記の試験に使える電卓は、

  • MUボタンなどのプログラム機能が無い
  • 電子音が鳴らない(オフにできれば問題ない)
  • サイズが17cm×20cm以下であること

※試験を実施している機関によって異なります。

2014年7月30日水曜日

新型Mac mini Mid-2014発売

Mac mini 2014アップルの公式サポートページにMac mini Mid-2014の表記が発見されました。
ページはすぐに修正されたそうですが新型のMac miniはとりあえず2014年内に発売されそうです。
来年以降ならCPU Bloadwel+メモリ DDR4などの搭載が期待できますが、現状ではMac mini 2012との性能差は僅かだと思われます。ac無線LANもまだ普及していませんし。

Unityで動的にオブジェクトを作成表示する

メインカメラに以下のスクリプトを登録して、
インスペクタからprefabに作成するオブジェクトを登録してください。

using UnityEngine;
using System.Collections;

public class NewObject : MonoBehaviour {
public GameObject prefab;
// Use this for initialization
void Start () {
for (int i = 0; i < 10; i++)
{
prefab.gameObject.name="object"+i;
Instantiate(prefab, new Vector3(0,10+3* i,0), Quaternion.identity);
}
}
void Update () {
if (Input.GetMouseButtonDown(0)) {

Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit = new RaycastHit();

if (Physics.Raycast(ray, out hit)){
GameObject obj = hit.collider.gameObject;
Debug.Log(obj.name);
}
}

}
}

objectNが10個作成されて上から降って着ます。
タッチしたオブジェクトの名前がログに表示されます。

Unityでタッチしたオブジェクトをドラックで移動させるサンプルソース

UNITYアイコン地表のオブジェクトをタッチで移動させるサンプルソースです。

currentPosition.y = 1f;
の部分でオブジェクトのy位置(高さ)は固定しています。

using UnityEngine;
using System.Collections;

public class TouchMove: MonoBehaviour {

private Vector3 objectPosition;
private Vector3 mouseOffset;

void OnMouseDown() {
this.objectPosition = Camera.main.WorldToScreenPoint(transform.position);
this.mouseOffset= transform.position - Camera.main.ScreenToWorldPoint
(new Vector3(Input.mousePosition.x, Input.mousePosition.y, objectPosition.z));
}

void OnMouseDrag() {
Vector3 currentMousePosition = new Vector3(Input.mousePosition.x, Input.mousePosition.y, objectPosition.z);
Vector3 currentPosition = Camera.main.ScreenToWorldPoint(currentMousePosition) + this.mouseOffset;
currentPosition.y = 1f;
transform.position = currentPosition;
}
}

メインカメラのアングルはXを水平Zを垂直に見えるようにしてください。