くだらなさ過ぎて検索しても出てこなかった.
Scaleをマイナスにするだけ.
yz平面に対象にしたいならスケールのxをマイナスにする.
くだらなさ過ぎて検索しても出てこなかった.
Scaleをマイナスにするだけ.
yz平面に対象にしたいならスケールのxをマイナスにする.
Unityは便利なもので,Hierarchyで子要素に指定してあげると,親要素が移動回転スケール変更したときに一緒に移動回転してくれます
ただ,それをやってくれない場合があります.
それはrigidbodyがついている場合です.
この場合,両方にrigidbodyを追加し,片方のオブジェクトにJoint類を追加します
Unityには3Dの場合
* Fixed Joint
* Spring Joint
* Hinge Joint
があります.
上記のように座標変換的に使用したい場合はFixed Jointを使用するとよい
MeshFilterはメッシュの大きさ等を取得できたりするコンポーネントです
MeshFilter f = GetComponent<MeshFilter>();
Vector3 size = f.mesh.bounds.max - f.mesh.bounds.min; //meshを包括するboxのサイズを取得(できるはず)
けどこんなエラーがでて困ってました.
Not allowed to access MeshFilter.mesh on prefab object. Use MeshFilter.sharedMesh instead UnityEngine.MeshFilter:get_mesh()
結果的にはprefabの要素にアクセスしてたのでエラーが出てました.
つまりこんな感じ
GameObject prefab = (GameObject)Resources.Load ("Prefabs/model"); MeshFilter f = prefab.GetComponent<MeshFilter>(); Vector3 size = f.mesh.bounds.max - f.mesh.bounds.min; //meshを包括するboxのサイズを取得(できるはず)
ですので,実体化?させたものを対象にすればエラーが取れました
GameObject prefab = (GameObject)Resources.Load ("Prefabs/model"); GameObject obj =(GameObject)Instantiate(prefab, Vector3.zero, Quaternion.identity); MeshFilter f = obj.GetComponent<MeshFilter>(); Vector3 size = f.mesh.bounds.max - f.mesh.bounds.min; //meshを包括するboxのサイズを取得(できるはず)
ただ,エラーがおっしゃってる解決方法
instead UnityEngine.MeshFilter:get_mesh()
がよくわかりませんでした(使い方?がわからない)
OpenCVでウインドウの枠を非表示にしたいと思いました
これのタイトルとか外枠ですね
ソースはこれ.WINAPIを使用して,ウインドウを弄ります.
環境は C++, windows7 64bit
適当に書いてるので変数などは随時補完してください
#include "windows.h" std::string WINNAME = "test"; //ウインドウ作成 cv::namedWindow(WINNAME, CV_WINDOW_NORMAL); //WinAPIでウインドウの設定を弄る HWND a = FindWindow(NULL, WINNAME.c_str()); //名前からウインドウを検索 std::stringからLPCTSTR変換をしている SetWindowLongPtr(a, GWL_STYLE, WS_POPUP); //WS_THICKFRAME : 細枠 | WS_POPUP 枠ほぼなし SetWindowPos(a, NULL, movex, movey, width, height, SWP_DRAWFRAME | SWP_SHOWWINDOW | SWP_FRAMECHANGED); //これがないと再描画されない cv::imshow(WINNAME, img); cv::waitKey(0);
でこうなります.わかりにくい・・・
SetWindowPosは実行しないと再描画されないみたいです.またSWP~のパラメータはこうすれば動いただけなので不必要なものがまぎれているかも
Unity5において,UGUI(PanelとかButtonなど)をドラッグで移動させます.
通常のGameObjectだとググレばすぐ出てくるのですが,GUIを動かすとなるとちょっと困りました
ソースはこれです
using UnityEngine; using UnityEngine.UI; using UnityEngine.EventSystems; using System.Collections; public class Drop : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler{ // Use this for initialization void Start () { } // Update is called once per frame void Update () { } public void OnBeginDrag(PointerEventData eventData) { } public void OnDrag(PointerEventData eventData) { GetComponent<RectTransform>().position += new Vector3(eventData.delta.x, eventData.delta.y, 0.0f); } public void OnEndDrag(PointerEventData eventData) { } }
ポイントとしては
・I~Handlerの継承
・ドラッグ中のイベント「OnDrag」内で,移動量eventData.deltaを足していく
です
【追記】
GetComponent
Unity5でAndroidに対応したアプリを作ろうとしたときの備忘録を二つほど
エディタ上ではうまくいくのに,Androidのアプリにした途端,通信がうまくいかなくなった
ググれば腐るほど出てくるんですが,
string URL = "aaa.com";
var www = new WWW(URL, sendbytes, header);
みたいな感じでデータをPOSTすることができます.
ただ,ぼくはURLの部分を
string URL = "aaa.com:30000";
みたいにしたらエディタ画面と,Windows用にエクスポートしたゲームでは通信できるんですが,Androidだとできませんでした.
なので,嫌々
string URL = "http://aaa.com";
にして,サーバー側のポート番号も30000⇒80にしました.そしたら動きました.よくわからない
追記
おそらく"http://"から始まらないと無理っぽい
ボタンを押したらスクショして送信,みたいなことしようとしてました.
ですけど送信できなかったんですよね.
原因としては,デバッグ用にローカルにスクショを保存していて,保存のパスがWindowsとAndroidで互換性?がなかったからです.
IsolationStorageException吐いてました.
確認方法としては,
adb logcat | grep com.bb.aa
(com.bb.aaはUnityで設定したときのもの)
でそのアプリの出力を見てました.
で,そのエラーのあとに送信のプログラムがあったので,動いていなかった.それだけ