//Unity 4.5.5
//リストから要素を取り出す
foreach (Transform child in transformList) {
Deubg.log(child.localPosition);
}
//Destroyで削除するときは連想配列は使えない
//C#逆順で連想配列を取り出すことはできない、List.Revers()では配列が逆転するだけ
for (int i = transformList.Count - 1; 0 <= i; i--) {
//Transformの時はDestory時に.gameObjectを取り出す
Object.Destroy (transformList [i].gameObject);
}
2014年10月27日月曜日
[Unity]連想配列を使う、配列にあるオブジェクトを削除する
2014年10月17日金曜日
[Unity]Input.Touchesの使い方
https://www.assetstore.unity3d.com/jp/#!/content/3283
・Input.Touchesはスマホのタッチイベントを最適化したスクリプト
・スワイプ、ピンチ、ドラッグ、回転、ダブルタップ、ロングタップ、ショートタップ、チャージなどを検出することができる
・タッチが検出できないPCでの動作ではマウスと同様の動きをする
・価格は25$
使い方
Unity 4.5.5
Input.Touhes v1.1.5
InputTouches > InputPrefb > GestrueのプレハブをHierachyに追加
Hierachyに適当なオブジェクトを追加して新規Scriptを追加
・Input.Touchesはスマホのタッチイベントを最適化したスクリプト
・スワイプ、ピンチ、ドラッグ、回転、ダブルタップ、ロングタップ、ショートタップ、チャージなどを検出することができる
・タッチが検出できないPCでの動作ではマウスと同様の動きをする
・価格は25$
使い方
Unity 4.5.5
Input.Touhes v1.1.5
InputTouches > InputPrefb > GestrueのプレハブをHierachyに追加
Hierachyに適当なオブジェクトを追加して新規Scriptを追加
//C# サンプルコード
//オブジェクトが有効になった時に呼び出される
void OnEnable() {
//onShortTapE、onDoubleTapEというイベントがあるが、
//onMultiTapEに統合されていおり、
//onShortTapE、onDoubleTapEはいずれ廃止される
//リスナーに登録
//通常のタップとマルチタップを検出する
IT_Gesture.onMultiTapE += OnMultiTap;
//ロングタップ
IT_Gesture.onLongTapE += OnLongTap;
//チャージング(タップしたままホールド時間を随時検出)
IT_Gesture.onChargingE += OnCharging;
//チャージング終了(チャージ後に指が離れた)
IT_Gesture.onChargeEndE += OnChargeEnd;
//ドラッグ開始
IT_Gesture.onDraggingStartE += OnDraggingStart;
//ドラッグ中
IT_Gesture.onDraggingE += OnDragging;
//ドラッグ終了
IT_Gesture.onDraggingEndE += OnDraggingEnd;
}
//オブジェクトが無効になった時に呼び出される
void OnDisable() {
//リスナーの登録を解除
IT_Gesture.onMultiTapE -= OnMultiTap;
IT_Gesture.onLongTapE -= OnLongTap;
IT_Gesture.onChargingE -= OnCharging;
IT_Gesture.onChargeEndE -= OnChargeEnd;
IT_Gesture.onDraggingStartE -= OnDraggingStart;
IT_Gesture.onDraggingE -= OnDragging;
IT_Gesture.onDraggingEndE -= OnDraggingEnd;
}
//以下のメソッドでタッチを検出する
void OnMultiTap(Tap tap){
//do a raycast base on the position of the tap
//対象のオブジェクト(shortTapObj)がタップされているか調べる、
//1つ1つ調べるのは結構面倒くさい、タップだけならAssetStoreのTouchScriptが良いかも
Ray ray = Camera.main.ScreenPointToRay(tap.pos);
RaycastHit hit;
if(Physics.Raycast(ray, out hit, Mathf.Infinity)){
//if the tap lands on the shortTapObj, then shows the effect.
if(hit.collider.transform==shortTapObj){
//place the indicator at the object position and assign a random color to it
Indicator.transform.position=shortTapObj.position;
Indicator.startColor=GetRandomColor();
//emit a set number of particle
Indicator.Emit(30);
}
//if the tap lands on the doubleTapObj
else if(hit.collider.transform==doubleTapObj){
//check to make sure if the tap count matches
if(tap.count==2){
//place the indicator at the object position and assign a random color to it
Indicator.transform.position=doubleTapObj.position;
Indicator.startColor=GetRandomColor();
//emit a set number of particle
Indicator.Emit(30);
}
}
}
}
2014年7月31日木曜日
[iOS]UIImageをリサイズする
+ (UIImage *)resize:(UIImage *)image rect:(CGRect)rect
{
UIGraphicsBeginImageContext(rect.size);
[image drawInRect:rect];
UIImage* resizedImage = UIGraphicsGetImageFromCurrentImageContext();
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetInterpolationQuality(context, kCGInterpolationHigh);
UIGraphicsEndImageContext();
return resizedImage;
}
2014年7月29日火曜日
[iOS]ディスプレイと画像の比率を求める
- (float)getScale :(CGSize)displaySize :(CGSize)imageSize {
float scale = 0.0;
if (imageSize.height > displaySize.height) {
scale = displaySize.height / imageSize.height;
} else {
scale = imageSize.height / displaySize.height;
}
return scale;
}
[iOS]メールを送信
- (void)sendMail
if([MFMailComposeViewController canSendMail] == YES) { //メーラーが使用できるかどうか
MFMailComposeViewController *controller = [[MFMailComposeViewController alloc] init];
[controller setSubject:@"subject"]; //題名
[controller setMessageBody:@"message" isHTML:NO]; //本文
controller.mailComposeDelegate = self; //成功、失敗時にdelegateを送る
[self presentViewController:controller animated:YES completion:nil]; //ViewContrllerとして立ち上げる
}
}
- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{
[self dismissViewControllerAnimated:YES completion:nil]; //終了時にViewContrllerを閉じる
return;
}
2014年6月30日月曜日
[iOS]UISliderとCGAffineTransform
UISliderでCGAffineTransformを使用するとつまみがタップできなくなるタイミングがある
再現率は100%ではない
ちょっと調べてみたが対策法はなさそうなのでUIScrollViewなどで代用するしかなさそうだ
2014年5月20日火曜日
[Unity]Unityをはじめて触ってみた時のメモ
3日ほどUnityのiOS、Androidアプリを作ってみて、
コイン落としのようなアプリができたので使用感とハマったポイントを書き出してみる
・公式の日本語ドキュメントは豊富
・Assetを使うと時間を短縮できる
・言語は3つある
Javascript
チュートリアルや書籍の多くがJavascriptで書かれているが
UnityScriptと呼ばれるぐらいHTMLで使用するJavascriptと離れているのでちょっと使いにくい
Boo
Pythonっぽい言語になっている、これで書いている人は少ないようだ
C#
ドキュメントも豊富で結局C#を選択した
・全てのassetやサンプルプログラムがスマホ用に最適化されているわけではない
Unityでは複数のプラットフォームに対応するために
[Project Setting]>[Input]から呼び出せる入力用Wrapperが標準で用意されているために
コントローラー、ジョイスティックやキーボードの入力を簡単に設定できる
例、プレイヤーが右に移動するスプリクトを組むだけで
コントローラー右、ジョイスティックを右に傾ける、キーボード"D"キー
の3つが対応される
ただしタッチパネルの場合は例外でコードを入力する必要がある。
function Update () {
for (var touch : Touch in Input.touches) {
//TODO touch event
}
}
タッチイベント用のAssetも豊富にある
オススメはこちら
TouchScript
タップ、ドラッグ、ロングタップなどに対応
スマホ以外にもWindows系列にも対応している
サンプルの動作が自然な感じなので作成するアプリに役立ちそう
コイン落としのようなアプリができたので使用感とハマったポイントを書き出してみる
・公式の日本語ドキュメントは豊富
・Assetを使うと時間を短縮できる
・言語は3つある
Javascript
チュートリアルや書籍の多くがJavascriptで書かれているが
UnityScriptと呼ばれるぐらいHTMLで使用するJavascriptと離れているのでちょっと使いにくい
Boo
Pythonっぽい言語になっている、これで書いている人は少ないようだ
C#
ドキュメントも豊富で結局C#を選択した
・全てのassetやサンプルプログラムがスマホ用に最適化されているわけではない
Unityでは複数のプラットフォームに対応するために
[Project Setting]>[Input]から呼び出せる入力用Wrapperが標準で用意されているために
コントローラー、ジョイスティックやキーボードの入力を簡単に設定できる
例、プレイヤーが右に移動するスプリクトを組むだけで
コントローラー右、ジョイスティックを右に傾ける、キーボード"D"キー
の3つが対応される
ただしタッチパネルの場合は例外でコードを入力する必要がある。
function Update () {
for (var touch : Touch in Input.touches) {
//TODO touch event
}
}
タッチイベント用のAssetも豊富にある
オススメはこちら
TouchScript
タップ、ドラッグ、ロングタップなどに対応
スマホ以外にもWindows系列にも対応している
サンプルの動作が自然な感じなので作成するアプリに役立ちそう
登録:
投稿 (Atom)