【ゲームエンジン】Unity初心者質問スレBuild4

■ このスレッドは過去ログ倉庫に格納されています
1名前は開発中のものです。
垢版 |
2020/03/29(日) 19:35:12.24ID:mirhKW7D
ゲームエンジンUnityを楽しむ初心者による初心者の為のスレ
その為「アセットを購入しましょう」「チュートリアルやれ」「ググレカス」等禁止
初心者が親身になって初心者に教える。
又ググレの場合、何のキーワードでググるのか書いてね

●リンク
・Unity(日本公式サイト)
http://unity3d.com/jp
・マニュアル
 http://docs.unity3d.com/ja/current/Manual/index.html
・チュートリアル
 http://unity3d.com/jp/learn/tutorials
・スクリプトリファレンス
 http://docs.unity3d.com/ja/current/ScriptReference/index.html
・FAQ
 http://unity3d.com/jp/unity/faq
・MSDN
 http://msdn.microsoft.com/ja-jp/ms348103←スクリプトのエラー番号をこれで検索すると原因が日本語で出てきます。
※前スレ
【ゲームエンジン】Unity初心者質問スレBuild3
https://itest.5ch.net/mevius/test/read.cgi/gamedev/1578720539
2020/04/15(水) 12:15:26.63ID:yVr1KOQK
>>129
例えば説明文が「敵に5ダメージ」だとして、
5の部分を変数にしてバフ等の効果によって変更可能にしたい場合どう管理すれば良いのかが思いつきません。

今はひとつひとつを関数にして表示しています。

public string Attack(int playerAttack)
{
var text = $"敵に{playerAttack}ダメージ";
}

こんな関数をたくさん書いたクラスから呼び出してtextに代入する感じです。

理想としては、ScriptableObjectにstring Descriptionを追加してインスペクターに「$"敵に{playerAttack}ダメージ";」の様に書き込めると非常に楽なのですが、記号なども含めてそのまま表示されてしまいました。
インスペクターのフォーム内で変数を使用する方法はあるのでしょうか?

この様に変化するテキストを管理したい場合もエクセルは向いているのでしょうか?
2020/04/15(水) 12:24:48.80ID:yVr1KOQK
>>130
物理挙動の話なら的外れかもしれませんが、
ttps://qiita.com/ryosebach/items/5bd90d4b464b9059f35d
ttps://qiita.com/pixelflag/items/e5ddf0160781170b671b
アニメーションの緩急はEasingと言うみたいです。
解決のヒントになれば良いですが。
134名前は開発中のものです。
垢版 |
2020/04/15(水) 13:15:37.54ID:lnHW68ZC
質問です
カメラを矢印キーで上下に動くようにしたいのですが…

下のスクリプトにtransform.Translate(0,1f,0)のように書き足してみたのですが、カメラが1f上を写すだけで移動しませんでした。
2Dです。

public GameObject Player;

void Update()
{
Vector3 PlayerPos = Player.transform.position;
transform.position=new Vector3(PlayerPos.x,0,-10);
}
2020/04/15(水) 13:29:54.08ID:UUYKPDdG
>>134
カメラのスクリプトじゃないのか?
136名前は開発中のものです。
垢版 |
2020/04/15(水) 13:40:58.84ID:lnHW68ZC
>>135
カメラのスクリプトです
このスクリプトだとプレイヤーのx軸を追従するようになってます
2020/04/15(水) 14:00:10.78ID:UUYKPDdG
>>136
なら、合ってるよ。
キャラの座標を毎回カメラに入れてるでしょ。
138帝王
垢版 |
2020/04/15(水) 14:02:51.23ID:PFjTS2Tn
いや違うだろw
カメラを十字キーで上下だぞ
x座標をプレイヤーポジションに合わせているだけで
入力すらとってないじゃないか
139帝王
垢版 |
2020/04/15(水) 14:08:21.41ID:PFjTS2Tn
よくわかんないから
きちんと書いてくれないか?
x軸はいいからy軸をどうしているのか
140名前は開発中のものです。
垢版 |
2020/04/15(水) 14:08:31.08ID:lnHW68ZC
>>138
一応
if(Input.GetKey(KeyCode.UpArrow))
{
transform.Translate(0,1f,0)
}
のような形でキー入力は入れてみたんですが、これだと上キーを押した時にカメラが1フレーム上に移動するだけでした…
141名前は開発中のものです。
垢版 |
2020/04/15(水) 14:09:48.32ID:lnHW68ZC
>>139
プレイヤーをジャンプさせたときに一緒にカメラが移動してしまうので0にしています
0のままだと動かないそうですが、どう変えればいいのかわからず…
2020/04/15(水) 14:17:38.35ID:PFjTS2Tn
毎フレームy座標が0に戻ってるのでは?
yもプレイヤーに合わせるからなるんじゃないのかな
transform.position.xでx座標だけプレイヤーのx座標にしたらどうだ?
143名前は開発中のものです。
垢版 |
2020/04/15(水) 14:28:05.74ID:lnHW68ZC
ありがとうございます
transform.position.xはどこに入れるのが正しいんでしょうか…
いろいろと試してみたのですがことごとくエラーを吐かれてしまいまして
2020/04/15(水) 14:31:19.37ID:JTV4iwjm
>>142
これやると何故かエラー出るんだよなぁ

var x = Player.transform.position.x;
var y = transform.position.y;
if(Input.GetKey(KeyCode.UpArrow))
y+=1;
else if(Input.GetKey(KeyCode.DownArrow))
y-=1;
transform.position = new Vector3(x,y,-10);
これで
145名前は開発中のものです。
垢版 |
2020/04/15(水) 14:38:32.35ID:lnHW68ZC
>>144
ああああああできました!!
ありがとうございます!!
146名前は開発中のものです。
垢版 |
2020/04/15(水) 14:39:29.09ID:lnHW68ZC
お二方ともご丁寧にありがとうございました!
147名前は開発中のものです。
垢版 |
2020/04/15(水) 15:48:30.60ID:bwJYFlmz
simulationライブラリで純粋な関数式プログラミングをする
ttp://x0000.net/topic.aspx?id=3631-0

UIライブラリ (C#, 2D) を作ったよ
ttp://x0000.net/topic.aspx?id=3688-0

連続と離散を統一した!
ttp://x0000.net/topic.aspx?id=3709-0

4Dエンジン
ttp://x0000.net/topic.aspx?id=3677-0

matrixのライブラリ
ttp://x0000.net/topic.aspx?id=3711-0

ある強力なFor関数
ttp://x0000.net/topic.aspx?id=3630-0

SQLライブラリ
ttp://x0000.net/topic.aspx?id=3675-0
2020/04/15(水) 20:56:57.45ID:8YH6OY1K
rigidbodyにおいて、質量(密度?)を不均一にしたい(おきあがりこぼしのように一部は重く、一部は軽いというような)のですがやり方を御教授頂けないでしょうか。
149帝王
垢版 |
2020/04/15(水) 22:58:43.68ID:PFjTS2Tn
フリーズローテーションとかじゃダメな気がするので
blender等でならオブジェクトのピボット中心点を移動できる
でもrigidbodyをつけるなら形の通りに動くのだろうか
マトリョーシカ(ロシアの人形ね)みたいな卵型を使うとして
オブジェクトを5分割とかにしてみて別々(もとは同じ)のオブジェクトを装備しているような感じにして
fbxで一緒にくっつけて書き出して
メッシュコライダー入れてリジットボディでmassでそれぞれの部位に重さを設定すれば
いけるんじゃないか
物理でバラバラにはならないと思うけどなるなら
blender等で全選択して押し出しでオブジェクトの膜を作って
バラバラにならないように外側を固めるとか
>>148さんが言うような機能は
たしかにblenderとかではウェイトペイントという機能はあるが
あれはボーンにどのくらい追従するかを設定するだけだから違う
無知ですまん
2020/04/16(木) 01:37:50.84ID:TrwSK5Ca
UNITYの教科書って本には、
プレファブ作ってスクリプトから生成するとき
 GameObject obj=Instantiate(prefab) as GameObject;
と記述するとあるのですが、
これの「as GameObject」付けなくても生成してくれるんですが、
省略してもいいんでしょうか?
2020/04/16(木) 06:07:39.54ID:f9bKhCih
staticのシングルトンで作ったDataクラスに GameObject型のenemy1を宣言し、
別のスクリプトからプレハブをロードしてインスタンスしたところ、シーン上ではプレハブが表示されたもののなぜかnullエラーが出てしまいます。
同じプレハブをstaticでない通常の変数で宣言してインスタンスするとエラーは出ないのですが何が原因でしょうか?

//========■シングルトンのDataクラス↓

public class Data : MonoBehaviour
{
public static Data btdata = null;

private void Awake()
{
if (btdata == null)
{
btdata = this;
DontDestroyOnLoad(this.gameObject);
}
else
{
Destroy(this.gameObject);
}
}

public GameObject enemy1 = null;

//========■別のスクリプト↓

GameObject obj = (GameObject)Resources.Load("Enemy_Chinpira");
Data.btdata.enemy1 = (GameObject)Instantiate(obj,new Vector3(0.0f, 0.0f, 0.0f),Quaternion.identity); ←NULLエラーは出る

GameObject hoge = (GameObject)Instantiate(obj, new Vector3(0.0f, 0.0f, 0.0f), Quaternion.identity);  ←こっちだとエラーは起きなかった
152くまじょ
垢版 |
2020/04/16(木) 07:28:05.42ID:RAGlvlvv
>>151
シングルトンが不完全
どこよりも先にこいつのawakeが実行されるわけではないのでは?
153くまじょ
垢版 |
2020/04/16(木) 07:38:25.42ID:/YRdqyfH
>>151
別のスクリプトのawakeで実行してるとか

※個人の感想
個人的には複数シーンを使うときこのやり方は俺の好みではない
2020/04/16(木) 07:39:07.03ID:f9bKhCih
>>152
Awake使ってるの今のところここしかないです…
155くまじょ
垢版 |
2020/04/16(木) 07:39:08.75ID:/YRdqyfH
>>152
不完全というのは不適切でした
156くまじょ
垢版 |
2020/04/16(木) 07:43:52.45ID:/YRdqyfH
>>154
このシングルトンのオブジェクトを
このシングルトンを使うすべてのシーンに
一つ置いてますか?

このシングルトンのawakeが実行されていないと思われるのでスクリプトがあるだけでこのシングルトンのゲームオブジェクトが存在しないのではないかと思う
2020/04/16(木) 08:00:07.67ID:f9bKhCih
>>156
すみません。テストをしているシーン上にDataをアタッチしたオブジェクトを置かれていませんでした…
シーンに配置したところエラーが出なくなりました。ご指摘ありがとうございます!
2020/04/16(木) 08:09:37.51ID:f9bKhCih
すいませんもう一つだけ教えてください。ついさっきDataがシーン上にない時に試行錯誤しているうち
シングルトンの public GameObject enemy1 = null; を public staticに変えて、
Data.btdata.enemy1 = ... の部分を Data.enemy1 =  ... という記述に変えたことでもエラーが出なくなった事に気づいたのですが、

これは普通のpublicだとbtdataをシーン上に配置してインスタンスしないとアクセスできないけど、
public static だとインスタンス無しでアクセスできる、ということなのでしょうか?
159くまじょ
垢版 |
2020/04/16(木) 08:36:18.21ID:8aea26m5
>>158
正確にどういうスクリプトになったのか曖昧なので俺にはわからないのでわかりません

staticつけたものはインスタンスとは独立してるからね
インスタンスがいくつでも0個でもstaticは一つ存在する

でもシングルトンのインスタンスを一つ作ることになるけどね
シングルトンの中身の全てにstaticをつけるとかしないから
2020/04/16(木) 08:51:29.56ID:f9bKhCih
>>159
ありがとうございます。シングルトンの解説をしているサイトでメンバ変数にstaticがあるものとないものがあるのはなんでだろうと思ってたんですが、少し理解できました。
2020/04/16(木) 09:07:29.78ID:kHeNh8ng
>>149
unity上で部品のように固定する感じですか、ありがとうございます☺
2020/04/17(金) 05:57:19.40ID:VOQWR+Wk
ゲームオブジェクトのプレハブを動的に切り替える事はできないのでしょうか?
共有のゲームオブジェクトを一つ作り、その中に複数のprefabをアタッチしておき、ゲームの状況に応じてprefabを切り替える…ということをやりたいのですが、上手くいきません。

instantiateをするとクローンの別オブジェクトは生成されるのですが、別オブジェクト生成ではなく自分自身のprefabを切り替えたいです
2020/04/17(金) 08:33:03.18ID:qsxXwaDY
>>162
2つ既にくっついてるなら、
gameObject.setactive(false)
で、消しては?
2020/04/17(金) 11:32:53.20ID:VOQWR+Wk
>>163
SetActiveの存在をすっかり忘れてました…ありがとうございます
2020/04/17(金) 11:50:59.54ID:ZJBJxQUO
アニメーションクリップを作るときに、
imageをまとめてSceneビューにドラッグ&ドロップして作るときと
アニメーションウィンドウに画像をドラッグ&ドロップして作るときとで
アニメーションの速度が全然違うのですが、どうしてでしょうか。
タイムラインの秒数は同じはずなのに速度が全然違います。
2020/04/17(金) 17:22:44.21ID:SVOeOAOE
3Dのゲームなのですが、避雷針のようなものを設置して、それを中心に一定範囲内で発動した魔法はすべて避雷針に向かってしまい、
実質魔法が無効化される、というシステムを考えています

スフィアコライダを使ってその範囲を作り、接触した魔法を中央の避雷針に飛ぶように軌道修正させようとしましたが、
魔法自体何かに接触すると効果を発動して消えるものであるため、スフィアコライダに接触した時点で消えてしまいました

魔法を無力化する効果自体はこれでも十分ではあるのですが、できれば軌道が変わることで意外な場所に着弾したり、
魔法を受け続けた避雷針が破裂するか何かして周囲に被害をもたらしたりとかしてみたいので、消えてほしくはありません

何か良い方法はありませんでしょうか
2020/04/17(金) 21:00:16.16ID:5qCFijOz
特定の名前とかタグ名で判別すれば良いのでは?
2020/04/18(土) 06:19:18.41ID:cZRvWLJz
お前らどんなゲーム作ってんの?

https://youtu.be/CiPugp_YKm4
2020/04/18(土) 07:04:01.39ID:aB+KxVXg
無料版unityで作ったアプリをGoogleplayに出して遊んでみたらmade with unityのロゴが出なくなったんですが仕様ですか?
170名前は開発中のものです。
垢版 |
2020/04/18(土) 09:07:20.83ID:ctOwdfD6
>>103
ありがとうございます。

WebViewを表示したときにAdMobを消して
WebViewを消したときにAdMobがまた出るようにしたくて、

まずAdMobのスクリプトで
public static BannerView bannerView;
にして

public void HideBanner()
{
bannerView.Hide();
}

public void ShowBanner()
{
bannerView.Show();
}

を追加して、

WebViewを出すためのボタンを押したときのスクリプトに
AdMob.bannerView.Hide();
を書いたら
WebViewを出すときにAdMobを消すことができました。

(続きます)
171名前は開発中のものです。
垢版 |
2020/04/18(土) 09:13:51.88ID:ctOwdfD6
(続き)
そして、以下のWebViewのスクリプトに
-----------------------------------------------------
void Start()
{

     〜 (略)WebViewを表示させる部分 〜

webView.OnShouldClose += (view) =>
{
webView = null;
return true;
};

webView.OnMessageReceived += (view, message) => {
if (message.Path.Equals("close"))
{
Destroy(webView);
webView = null;
}
};
}

void Restart()
{
if (webView != null)
{
webView.Reload();
}
}
-----------------------------------------------------
(続きます)
17297
垢版 |
2020/04/18(土) 09:14:48.69ID:ctOwdfD6
(続き)

自分で色々試してこれを追加すると、
void ShowBanner()
{
if (webView == null)
{
AdMob.bannerView.Show();
}
}
WebViewをバックボタンで消すときにAdMobを再表示させることができたのですが、
もう一度WebViewを出すと、AdMobが消えずに残ったままになってしまいます。
webView == nullがずっと影響してしまうのでしょうか
どうすればいいのか教えてください。
173名前は開発中のものです。
垢版 |
2020/04/18(土) 14:06:29.92ID:ctOwdfD6
>>172は間違いでした。訂正です。
このUpdateの方を追加すると、

void Update()
{
if (webView == null)
{
AdMob.bannerView.Show();
}
}
>>172のような状態になります。
2020/04/18(土) 14:11:33.53ID:z8IRbjj0
if (Random.Range(1, 4) == 1 && 2)
{
Debug.Log("三分の二で入る");
}
と書くと
エラー CS0019 演算子 '&&' を 'bool' と 'int' 型のオペランドに適用することはできません
というエラーが出てしまうのですが、これと同じような処理をしたい場合どのように記述すればいいのでしょうか。
2020/04/18(土) 14:38:00.43ID:hYM46Tv/
>>174
if (Random.Range(1, 4) <3)
176174
垢版 |
2020/04/18(土) 16:03:25.48ID:z8IRbjj0
>>175どうも有難うございます!
177名前は開発中のものです。
垢版 |
2020/04/18(土) 17:40:56.82ID:LRtmG8cA
simulationライブラリで純粋な関数式プログラミングをする
ttp://x0000.net/topic.aspx?id=3631-0

UIライブラリ (C#, 2D) を作ったよ
ttp://x0000.net/topic.aspx?id=3688-0

連続と離散を統一した!
ttp://x0000.net/topic.aspx?id=3709-0

4Dエンジン
ttp://x0000.net/topic.aspx?id=3677-0

matrixのライブラリ
ttp://x0000.net/topic.aspx?id=3711-0

ある強力なFor関数
ttp://x0000.net/topic.aspx?id=3630-0

SQLライブラリ
ttp://x0000.net/topic.aspx?id=3675-0
2020/04/19(日) 04:12:48.26ID:1PPWw4FK
キーを押したら平行ライトの角度が変えられるスクリプトで質問したいです。
元のライトの角度が(50,-30,0)とかになっていてたとします。
リセットキーをつけようとQuaternion.identityをつかうと0,0,0
になってしまいます。
もとの(50,-30,0)にもどす(リセット)するにはどうしたらいいでしょうか?
よろしくお願いいたします。
-------------------------------
if (Input.GetKey(KeyCode.U))
{
transform.Rotate(50 * Time.deltaTime, 0, 0);
}
if (Input.GetKey(KeyCode.I))
{
transform.Rotate(-50 * Time.deltaTime, 0, 0);
}
if (Input.GetKey(KeyCode.O))
{
transform.Rotate(0, -50 * Time.deltaTime,0);
}
if (Input.GetKey(KeyCode.P))
{
transform.Rotate(0, 50 * Time.deltaTime,0 );

}
if (Input.GetKey(KeyCode.L))
{
transform.rotation = Quaternion.identity;

}
2020/04/19(日) 07:08:12.21ID:g5SC/sTa
>>178
俺は初心者なので詳しいことは知らんが
角度って難しいね

回転(相対変化)じゃなくて角度を指定したいとか
検索しても話がかみ合わない
2020/04/19(日) 07:17:31.57ID:g5SC/sTa
>>178
平行ライトは知らんので使えるか知らんが
eulerAnglesとかlocalEulerAngles
181178
垢版 |
2020/04/19(日) 09:29:41.76ID:1PPWw4FK
ありがとうございます。
いろいろ試して
最後のリセットさせようとする文を

transform.rotation = Quaternion.Euler(50, -30, 0);

にしました。
初期値を自分で書いてそれに戻してるだけですが機能しました。
正しいやり方ではないと思いますが。
2020/04/19(日) 10:03:59.90ID:VkHE7jHb
>>181
リセット時に向く方向を変数にして、
インスペクタから指定できるようにするとか、
start関数内で現在の向きを変数に格納しておく、
とかにすると使い勝手がいいかもしれません。
2020/04/19(日) 12:03:44.34ID:iMvDFyAq
位置とスケールは簡単なのに角度になると急に面倒に…
0〜180、0〜 -180、0〜360とかぁ〜
184名前は開発中のものです。
垢版 |
2020/04/19(日) 18:44:44.40ID:XRjxy4OE
他オブジェクトにつけたスクリプトを参照できるようなスクリプトを書きたいのですがどのように書けばいいんでしょうか…
プレイヤーキャラのスクリプトから向きの情報を得て弾の進行方向を変えるような感じをイメージしているんですが。
2020/04/19(日) 20:06:29.04ID:+eR6EvBT
>>184
以前自分も全く同じ疑問持ちました
自分的にこのサイトが一番わかりやすかったです
https://htsuda.net/archives/1702
186名前は開発中のものです。
垢版 |
2020/04/19(日) 20:26:54.21ID:NPwmi6aX
animatorについてなんだけど、3dモデルに他のキャラのアニメーション付けてもちゃんと動いてくれるの?
VRMとかにモーションつける時とか違うキャラの付けてもちゃんと動いてるのが不思議で
2020/04/19(日) 23:55:02.39ID:1PPWw4FK
>>186
ボーンがUnityの指定しているHumanoidの仕様で、ある程度ちゃんとつけられた
キャラなら他から持ってきた動きでも動いてくれると思います。
2020/04/20(月) 13:43:13.94ID:u07mKJre
Youtubeの画面下の横長動画プレイヤーみたいなのを作ろうとしているのですが、うまくいきません。

1.空オブジェクト(A)を作成。各種UI Buttonをその子として入れる。
2.別途UI Panelオブジェクト(B)を作成。Aには入れない。
3.Bに「イベントトリガー」コンポーネントをつけ、Pointer EnterでAのSetActiveをONに。Pointer ExitでOFFに。
4.BをAよりも画面手前に置くと、Aのボタンが反応しなくなる
5.BをAよりも画面奥に置くと、AのボタンにマウスーオーバーしたときABともに高速点滅する
2020/04/20(月) 14:32:09.13ID:u07mKJre
>>188自己解決しました。
BをAに被せず、3のオンオフを逆にしたらOKでした
190名前は開発中のものです。
垢版 |
2020/04/20(月) 14:42:58.66ID:zd2flDEV
>>184です
参照する方法は分かったのですが、弾を発射した後にプレイヤーの向きを変えるとそれに伴って弾の進行方向まで変わってしまうようになりました…
(右に発射したあと左を向くと弾の方向も左に変わってしまう…というような感じです)

発射した時点で進行方向を固定する関数などあれば教えていただきたいです。

>>185
一度は思いつくものの形にするには時間かかりますよね…
レスありがとうございます&#128522;
2020/04/20(月) 14:46:13.15ID:7TeDGIGu
>>190
角度取得をstartじゃなく、updateにでもいれてるんだろうね。
2020/04/20(月) 15:01:19.48ID:Z9e9J0rW
ゲームにはよくパワーアップやパワーダウンの効果をもつバフ、デバフがあると思います

こういったものというのは、先に計算を行って置き、実数を変更しておくのが一般的なのでしょうか
それとも、効果を発揮する状況になったとき(たとえば攻撃時、攻撃力の値が必要になったとき)に毎回算出するのが一般的なのでしょうか

前者の場合だと計算は完了しているため後は値を参照すればパワーアップ状態での行動に反映でき、負荷が軽くなるとは思うのですが、
パブ、デバフの効果切れの際に、特に乗算等で計算していた場合、パワーアップ中にレベルアップや装備変更などで元の値が変化してしまうと
効果切れの処理のときに元の値が狂ってしまうバグが発生してしまいます

後者の場合だと前述のバグは発生しにくいとは思いますが、攻撃のたびにパワーアップ分を計算しなくてはならず、
簡単な計算とはいえ毎回負荷がかかってしまいます

今作っているのは3Dでリアルタイムで動くRPGのようなもので将来オンライン化を目指していますが、
バグの回避と拡張性の問題から後者の手段を取ろうと思っているのですが、処理負荷がどう響くのか分かりません

とりあえず一般的な手法ならそれなりに実績もあるだろうということで、どちらが一般的でしょうか
193名前は開発中のものです。
垢版 |
2020/04/20(月) 15:10:33.56ID:zd2flDEV
>>191
Startに入れて実行したら弾が進まなくなりました…
なぜなんでしょうか…
2020/04/20(月) 15:49:24.30ID:BqIKHtjL
>>192
前者でも元の値が変わったときに再計算をはさんでおけばバグは起きないだろうし、攻撃のたびに単純な計算するくらいの負担を気にする必要があるとも思えないです。
攻撃速度が1秒間に100回で複数の敵に多段ヒットしまくる様な特殊なゲームでなければですが。

>>193
方向の決定をStartでして、その方向にupdateで進めればいいんじゃない?
2020/04/20(月) 16:27:38.06ID:hAG3HiSQ
scriptを用いて指定オブジェクトの色をGetComponent<Image>().material.color で変更しようとしたところ
指定したオブジェクト以外の色も変更されてしまいます。
指定したオブジェクトのみ変更させたい場合どうしたらよいでしょうか

Default UI Material というのが指定した色になっていました。
2020/04/20(月) 16:35:21.10ID:7TeDGIGu
>>193
おい!w
関数理解して組んでるのか?
2020/04/20(月) 16:36:35.22ID:7TeDGIGu
>>195
確か、マテリアルカラーはパレットだから、ほかのオブジェクトでも使ってたら変わったよ。
それが嫌なら専用のマテリアルを作るのが1番かな。
2020/04/20(月) 16:46:25.44ID:hAG3HiSQ
返答ありがとうございます。
指定したImageオブジェクト(ほかのオブジェクトも)のmaterialを設定していませんでした。
指定オブジェクトのmaterialを「Sprites-Default」に設定したところ
指定したオブジェクトのみ色を変えることができました。ありがとうございます。
199名前は開発中のものです。
垢版 |
2020/04/20(月) 17:10:09.14ID:zd2flDEV
>>196
GameObject Player;
SpriteRenderer Renderer;

void Update()
{
bool left =Renderer.flipX //左向きのときtrue

if(left==true)
{
transform.Translate(-0.5f,0,0);
}
else
{
transform.Translate(0.5f,0,0);
}

}

というスクリプトをUpdateに入れています
Update関数の中にプレイヤーの向きの情報が入っているので、弾が常にそれに連動してしまうのはわかるんですが…
2020/04/20(月) 17:33:02.98ID:QzIkkg0M
unity(2D)って、ひょっとしてそれほど画像の大きさは気にしなくていいですか?
カメラサイズとかで調整して、カメラで見えたものがそのまま映像として出る感じ?
2020/04/20(月) 17:40:40.58ID:5Q+qVe+b
>>199
leftをメンバ変数にしてstart()で向きを代入すればいい
202名前は開発中のものです。
垢版 |
2020/04/20(月) 17:55:39.99ID:zd2flDEV
>>201
public bool left を文頭に付け加えればメンバ変数になりますか?
それと向きの代入はどのように書けばいいのでしょうか?
2020/04/20(月) 19:41:13.85ID:7TeDGIGu
>>202
そんで、left=render…をスタートにね。
2020/04/20(月) 20:05:15.73ID:vPtvjXeA
インスペクターの変数表示を折りたたみしたくて、
「InspectorFoldoutGroup」というのを見つけたのですが導入方法がわかりません。
やり方教えてほしいです。
2020/04/20(月) 20:50:29.55ID:bEPCXYQk
>>204
Homebrewフォルダを自分のプロジェクトのAssetsに置く

折りたたみを使いたいスクリプトの一番上の部分に
using Pixeye.Unity;
を追加

あとは添付されてる
README.md
見ればわかるはず。
.mdファイルが開けなかったらブラウザにドラッグ&ドロップすれば見れる
206名前は開発中のものです。
垢版 |
2020/04/20(月) 21:03:41.06ID:zd2flDEV
GameObject Player;
SpriteRenderer Renderer;
public float x;
public bool left;

void Start()
{

left = Renderer.flipX;
Player = GameObject.Find("Player");
Renderer = Player.GetComponent<SpriteRenderer>();

if (left == true)
{
x = -0.5f;
}
else
{
x = 0.5f;
}


void Update()
{
transform.Translate(x, 0, 0);
}

とにかく手探りで書いてみました。
実行したところ、やはり弾が生成された地点で止まってしまいます。
どこを直せばいいのでしょうか…
207タワー ◆j2ZL4YtpzY
垢版 |
2020/04/20(月) 21:16:59.91ID:IQn62GFy
>>206
xの値変わって無くないですか?
方向はStart()で決めてるんでその後のxの加算減算はUpdate()内で行えば動きませんか?
2020/04/20(月) 21:28:27.99ID:vPtvjXeA
>>205
おかげさまで導入することができました 
ちなみに自分がひっかかってたのはダウンロードの仕方からわからなかったのですが
サイトの Clone or download → Download ZIP から落とせました。
たぶんダウンロード出来てたとしても導入でつまづいてたと思うので(英語わからない)
助かりました ありがとうございます!
209名前は開発中のものです。
垢版 |
2020/04/20(月) 22:10:13.03ID:zd2flDEV
>>207
Startでxに代入している-0.5fや0.5fは方向を決めるだけのものなんですか?
であればUpdate内にxと書いただけでは動かないのは納得です…
210名前は開発中のものです。
垢版 |
2020/04/20(月) 22:15:09.57ID:j+CwVrdp
>>206
これでどうだ

GameObject Player;
SpriteRenderer Renderer;
public float x;
public bool left;

void Start()
{

Player = GameObject.Find("Player");
Renderer = Player.GetComponent<SpriteRenderer>();
}

void Update()
{
left = Renderer.flipX;

if (left == true)
{
x = -0.5f;
}
else
{
x = 0.5f;
}

transform.Translate(x, 0, 0);
}
}
2020/04/20(月) 22:26:02.98ID:j+CwVrdp
発射後には方向動かしたくないのか 失礼
212名前は開発中のものです。
垢版 |
2020/04/20(月) 22:30:08.28ID:zd2flDEV
>>211
そうなんです!
これだとプレイヤーの向きを変えるたびに弾の方向も変わってしまうんです…
わざわざ書いてくださってありがとうございます
2020/04/20(月) 22:47:15.92ID:7TeDGIGu
>>212
206で動かない?
そもそもこのスクリプトは弾についてますか?
あとxの値が小さすぎるかもしれませんので、おおきくするとか。
214タワー ◆j2ZL4YtpzY
垢版 |
2020/04/20(月) 23:01:34.95ID:IQn62GFy
>>209
あ、分かった二ヶ所です

まずStart()にある
if(left == true)

をUpdate()へ移動

んで加算減算ですが
x = -0.5f
ではなく
x -= 0.5fとx += 0.5f
これならどうだっ!?
2020/04/21(火) 00:16:51.48ID:VK5HUOlH
>>206
GetComponentする前にRendererを参照してるからぬるぽ出てるんじゃないの?
Renderer=の部分をleft=の上に移動してみては
216名前は開発中のものです。
垢版 |
2020/04/21(火) 01:34:28.12ID:TxUS3yyD
>>212
https://imgur.com/lOxmncE
こういう感じ?弾はプレハブをinstantiateで生成してるでいいのか?

GameObject Player;
SpriteRenderer Renderer;
public float x;
public bool left;


void Start()
{
Player = GameObject.Find("Player");
Renderer = Player.GetComponent<SpriteRenderer>();
left = Renderer.flipX;

}

void Update()
{
if (left == true)
{
x = -0.05f;
}
else
{
x = 0.05f;
}
transform.Translate(x, 0, 0);
}
217名前は開発中のものです。
垢版 |
2020/04/21(火) 02:35:32.80ID:eGonr+6D
>>213
このスクリプトは弾についてるやつです
これだと生成された場所で弾が止まってしまいます…
transform.Translate(0.5f,0,0)でいい感じだったので数値はこれでいいはずなんですが…。
218名前は開発中のものです。
垢版 |
2020/04/21(火) 02:39:51.81ID:eGonr+6D
>>214
>>216
お二方ともご丁寧にありがとうございます。
そうですね。弾はInstntiateで生成してます。
試してみます。

>>215
謎エラーが出てたのはこれが原因かもしれません…
完全に見落としてました、ありがとうございます
2020/04/21(火) 07:56:58.30ID:lxHdAL0J
>>217
ほな違うかー。それやと>>206で動くはずやもんな。
なんやろなー、一度update内をtranslate(1,0,0)だけにしてまず動くか試してみぃ。
220名前は開発中のものです。
垢版 |
2020/04/21(火) 10:03:30.31ID:eGonr+6D
>>216
この方のスクリプトで試したところ、理想通りの動きをしてくれるようになりました
>>214さんのスクリプトも試してみようと思います

数日にわたり本当にありがとうございました!
しっかり勉強します…!
221タワー ◆j2ZL4YtpzY
垢版 |
2020/04/21(火) 10:10:06.23ID:NfJnlsa5
>>220
あ〜ごめんなさいtranslateですね、少し勘違いしてたのでお気になさらず
私もまだまだ勉強中なのでお互い頑張りましょう!
2020/04/21(火) 11:36:12.60ID:K2oy6SXi
androidでrun and buildしようとしてgradleでエラーが出る

gradleのアップデートしようにもexportの仕方がわかんねえ…
2020/04/21(火) 22:53:53.72ID:csf8LLL0
使い方がイマイチわからないところがあるので質問させてください

AオブジェクトにスクリプトAを接続
スクリプトAでパブリックGameObject Bを宣言

すると
AオブジェクトのインスペクタにGameObject Bの項目が追加されますが、
スクリプトAのインスペクタにもGameObject Bの項目が追加されています。

AオブジェクトのインスペクタのGameObject Bには他のオブジェクトをドラッグドロップで
接続できますが、
スクリプトAのインスペクタのGameObject Bには同じように接続できません。
None(Game Object)となっています。
特に問題なく想定したとおり動いてるのでいいのですがちょっとだけ気になります。
スクリプトAのインスペクタにはどんな意味があるのでしょうか?
2020/04/21(火) 23:37:01.59ID:UQ97M8GL
>>223
スクリプトAのインスペクタ

というのは、プロジェクトタブ内でスクリプトを選択したときに表示されるもののことでしょうか?
であれば、設定できるのはプロジェクト内にあるゲームオブジェクトだけです。
プロジェクト内にあるプレハブを初期値として持たせておきたい場合はそこで設定するといいと思います。
2020/04/22(水) 01:06:31.31ID:KbfCVKCs
>>224
そうです Projectタブ内のスクリプト選択時に表示されるものです
おっしゃるとおりAssets内のプレファブからならドラッグドロップで登録できました
でもこれって
ゲームオブジェクト選択時に表示されるインスペクタのほうからでもプレファブ登録ってできますよね?
初期値に違いが出るんでしょうか?
2020/04/22(水) 01:27:55.05ID:sLe2iYSZ
スクリプトをアタッチした時点での初期値、という意味です。
2020/04/22(水) 01:43:37.40ID:KbfCVKCs
>>226
すみません 理解力が足りなくてよくわかりません・・・
どういう風な使い方ができるか具体例とかあれば教えていただけないでしょうか?
2020/04/22(水) 02:29:38.60ID:sLe2iYSZ
ただ単純に手間を省ける場合があるってだけです。

例えばプレハブに8割の確率で同じものを使う、という場合で、

100回スクリプトをアタッチしたとします。

初期値が空なら、100回プレハブを設定しなければなりません。

初期値に80回使うプレハブがすでに設定済みなら、
設定するのは20回ですみます。
2020/04/22(水) 07:29:50.06ID:idLW19fL
やばいずっと何言ってるかわかんねえ
2020/04/22(水) 11:29:44.07ID:VQM8R+FC
プレハブについての質問です。
すでに存在するオブジェクトに子としてプレハブを複製しようとしたときの座標がうまく設定できません。
スクリプトではこんな感じ記載しています
------------
ParentObject = GameObject.Find("ParentCanvas"); //すでに用意しているキャンパス
var parent = ParentObject.transform;

// プレハブをGameObject型で取得
GameObject obj = (GameObject)Resources.Load("Prefab");
// プレハブを元に、インスタンスを生成、
Instantiate(obj, new Vector3(1.0f, 1.0f, 0.0f);, Quaternion.identity, parent);

//ローカルポジションの設定
obj.transform.localPosition = new Vector3(100.0f, 100.0f, 0.0f);
----------
結果として子としてプレハブは複製できていますが、座標がローカルではなくワールド座標のほぼ原点に生成されてしまいます。

親のローカル座標に設定するにはどうしたらよいでしょうか?
InstantiateのVectorをローカル座標として設定したい状態です。
2020/04/22(水) 13:03:53.31ID:UU/VXGyk
>>230
最後のlocal posで、100じゃなくて、0.0.0でいいんじ「ないの?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況