録音ボタンの位置問題 とりあえず、位置を動かすことにした
ずっと悩んでいた録音ボタンの位置問題です。
スタート時、こうなっていても↓
位置を動かしてもボタンがついてこない
隣の画像と入れ替えてもボタンの位置は変わらない。
↓(猫の下のボタンを押して録音したらパソコンの画像の方の音が変更される)
ボタンの位置を、画像に付いて行くこさせることに一度してみました。
まだ、何をどのぐらいのことをしたら処理が重くなって
動かしていて不便を感じるのかが全然分かってないので、
むやみに恐れて二の足を踏んでおりました。
他の方法(スタート画面の時点で録音を済ませてしまうとか)も
考えたのですが、結局、今回の方法でとりあえずやることにしました。
結果、今のところこんな感じです。↓
犬だけ、ボタンがついていっています。
他の二つはまだプログラム前なので、どっちがどっちのボタンか分かりません。
犬の画像の部分のコードを書きます。
image1.csの追加部分
Classのところに
//位置を変えるために必要
public GameObject Button;
を記入し、
↓新しくButtonの枠が出来るので、そこにButtonオブジェクトをHierarchyから
もってきて加えました。
void OnMouseDrag()
{
//移動したマウスの座標を代入
var currentScreenPoint = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z);
//移動したマウス座標をワールド座標へ変換し,先ほど求めた offset を適用してアタッチしたオブジェクトの座標に直す
var currentPosition = Camera.main.ScreenToWorldPoint(currentScreenPoint) + this.offset;
//セットする
transform.position = currentPosition;
/////////////////////////////録音ボタンの位置関係/////OnMouseDragのとこと、posihenkoの関数のとこ//Startのとこ//////////////////////////////////////
//録音ボタンの位置も変更
Button.transform.position = new Vector3(transform.position.x, transform.position.y -70, -50);
back1Cu.GetComponent<play>().Posihenkopl();
}
コメントがやたら長くて読みにくいですが、
パッと見、探しやすくするために新しく加えたコードは長くしています。
(image2やimage3にもコピペしないといけないので、見つけやすいと助かる)
赤いところが加えたところです。
後、ココ↓ と、
public void Posihenkoimage1()
{
this.transform.position = pl.transform.position;
/////////////////////////////録音ボタンの位置関係/////OnMouseDragのとこと、posihenkoの関数のとこ//Startのとこ//////////////////////////////////////
Button.transform.position = new Vector3(transform.position.x, transform.position.y - 70, -50);
}
ココも↓
private void Start()
{
・・・・
/////////////////////////////録音ボタンの位置関係/////OnMouseDragのとこと、posihenkoの関数のとこ//Startのとこ//////////////////////////////////////
//録音ボタンの位置も変更
Button.transform.position = new Vector3(xPosi, yPosi - 70, -50);
}
加えました。
次に、背景をマウスでドラッグしたときにもボタンについてきて欲しいので
Play.csの追加部分です。
void OnMouseDrag()
{
//移動したマウスの座標を代入
var currentScreenPoint = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z);
//移動したマウス座標をワールド座標へ変換し,先ほど求めた offset を適用してアタッチしたオブジェクトの座標に直す
var currentPosition = Camera.main.ScreenToWorldPoint(currentScreenPoint) + this.offset;
//セットする
transform.position = currentPosition;
//録音ボタンの位置も変更
/////OnMouseDrag//と//Poshihenkoのところ///////////////////
Button.transform.position = new Vector3(transform.position.x, transform.position.y -70, -50);
ima1Cu.GetComponent<image1>().Posihenkoimage1();
}
それから↓ここ
public void Posihenkopl()
{
transform.position = image1.transform.position; // image1.csのpositionを自分のpositionにする。
Button.transform.position = new Vector3(transform.position.x, transform.position.y - 70, -50);
}
Start()は触りませんでした。
開始時にボタンの位置を決めるのは、image1でしてもらってるからです。
・・・
全部、コードを入れましたら、動かした後もボタンがついて行っています
↓