たくさんのレビューありがとうございます!
ご要望にお応えしまして、新たに2つのステージを追加して
まちがい探し3D アップデートver.1.1.0を配信開始しました。
4ステージ×5パターン=計20パターンのまちがい探しを3Dでお楽しみいただけます!
今後も引き続き、応援をよろしくお願い致します!
たくさんのレビューありがとうございます!
ご要望にお応えしまして、新たに2つのステージを追加して
まちがい探し3D アップデートver.1.1.0を配信開始しました。
4ステージ×5パターン=計20パターンのまちがい探しを3Dでお楽しみいただけます!
今後も引き続き、応援をよろしくお願い致します!
以前に似たようなエントリを書いたのですが、
「[Unity]:NGUIで各種画面サイズに対応する方法」
NGUI ver.3.0.7で大きな変更があったので、新しい方法をご紹介。
前回のUIAnchorとUIStretchを使う方法でも実現可能です。
使用バージョン:
Unity 4.2.2f1
NGUI 3.0.7f1
今回、SpriteなどのWidgetを追加すると従来の「Widget」以外に「Anchors」という項目が付いてきます。
ここでPaddedやRelativeといった項目を設定することで、以前のUIAnchor+UIStretchのような配置とサイズを設定出来ます。
各設定の仕方はざっとこんな感じ。
pixcel単位の指定では本末転倒なので、今回はRelativeで。
先ずTargetに親コンテナとなるオブジェクトを指定。
そして前回と同様に各Spriteの配置とサイズを親コンテナに対する比率で指定していきます。
すると…
こんな感じで画面サイズに合わせて各Spriteの配置・サイズが調整されて表示されます。
前回のUIAnchor+UIStretchを各Spriteにいちいちアタッチする方法よりはスッキリしますね!
Kick Far Away!! iPhone&iPad版アップデートver.1.3.2を配信開始しました。
・キック力の上限をなくしました!!
・画面デザインの変更
・キック時にまれにボールが動かず、記録が0mとなる不具合を修正。
レビューでのご意見・ご要望、ありがとうございます。
ご希望のあった、キック力上限の廃止を盛り込みました!
今後ともどうぞ宜しくお願い申し上げます。
ユニティ・テクノロジー・ジャパン様のホームページで、Unity3D使用タイトルを紹介しているUnity NEWSのコーナーにKick Far Away!!を掲載して戴きました。
iPhone & iPad用アプリとしてリリースしている「Kick Far Away!!」のAndroid版をリリースしました。
タップ操作だけでボールを遠くに飛ばすゲームです。
プレイする度にキック力が強くなり、遠くにボールを飛ばせるようになります。
iPhone&iPad版でご要望のあった、キック力の上限突破に関してはAndroid版での先行リリースとなります!
先日リリースした「まちがい探し3D」では、少し特殊な入力インターフェースを利用しています。
これらの入力をコントロールするためのスクリプトを公開します。
using UnityEngine; using System.Collections; public class CameraController : MonoBehaviour { const float ROTATION_SPEED = 5.0f; const float ZOOM_SPEED = 200.0f; private Vector3 original; private float angle_x = 0.0f; private float angle_y = 0.0f; private bool isDragging = false; private bool isDragged = false; private bool isPinched = false; private float interval = 0.0f; // Use this for initialization void Start () { Vector3 angles = transform.eulerAngles; angle_x = angles.y; angle_y = angles.x; original = transform.position; } void OnGUI() { if (Input.touchCount == 1 && !isPinched) { if (Event.current.type == EventType.MouseDrag) { isDragging = true; isDragged = true; } else { isDragging = false; if (Event.current.type == EventType.MouseUp) { if (!isDragged) Tap(Input.mousePosition); else isDragged = false; } } } else if (Input.touchCount == 0) { isPinched = false; } } void Update () { if (Input.touchCount == 2) { if (Input.touches[0].phase == TouchPhase.Began || Input.touches[1].phase == TouchPhase.Began) { interval = Vector2.Distance(Input.touches[0].position, Input.touches[1].position); } float tmpInterval = Vector2.Distance(Input.touches[0].position, Input.touches[1].position); original.z += (tmpInterval - interval) / ZOOM_SPEED; if (original.z > 0) original.z = 0; interval = tmpInterval; transform.position = transform.rotation * original; isPinched = true; } else if (isDragging) { angle_x += Input.GetAxis("Mouse X") * ROTATION_SPEED; angle_y -= Input.GetAxis("Mouse Y") * ROTATION_SPEED; transform.rotation = Quaternion.Euler(angle_y, angle_x, 0); transform.position = transform.rotation * original; } } private void Tap(Vector3 point) { // タップ時の処理を記述 } }
若干、難解なコードになってしまっていますが、元々ドラッグのみを実現するスクリプトにタップとピンチイン・ピンチアウトを無理くり付け足したため、このような状態になってしまいました。
OnGUI()を使わずにUpdate()でまとめて書き直した方がスッキリするでしょう。
画面にタッチされた時に触れた点が2カ所ならピンチイン・アウトの開始として、その2点間の距離をintervalに保持しておくと同時にisPinchedフラグを立てておきます。
このisPinchedフラグは、指が離れる時に指1本だけが残り不正なドラッグ・タップが起こらないよう判定するためのもので、タッチが検出されなくなると寝かせるようにしています。
ピンチイン・アウト中は前回のintervalと比較計算しズームイン・アウトの処理を行います。
触れた点が1カ所の場合、Event.current.type == EventType.MouseDragによりドラッグ中であると判定されたらisDraggingとisDraggedフラグを立てます。
isDraggingフラグが立っている場合には回転の処理を行います。
originalに初期位置、angle_x, angle_yに初期位置での向きを保持しており、ドラッグによりangle_*を変更し、その角度に基づき位置を計算します。
原点を中心に回転し、常に原点の方を向く事になります。
指が離れた場合にはisDraggedフラグが寝ていればタップの処理を行います。
つまりタップに関しては指が離れた時点での処理ということになりますが、ドラッグも実現するために選択の余地はありませんでした。