[過去ログ] 【ゲームエンジン】Unity初心者質問スレBuild1 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
96: 弟子 ◆rZPPjYuxmQ 2018/06/28(木)12:00 ID:/UzN8HYz(1/9) AAS
>>93
リファクタリングして短くなったのでSSであげますね
まぁまたケチ付けたい人が色々と文句ダケ言ってくるかもしれないけど気にせずに
まずは、ソース丸パクリでもどう動いているのか理解する事が重要で
その後に、少し修正してみて、例えば2つ先まで動くとかね
あと今は右、左の最大値は入れてないのでどこまでも行きます
そこは自分で最大値3以上は行かないという感じで修正してみてください

自分も最初は雑誌のBASICを打ち込んで覚えたので丸写しは有効な手段だと思います

画像リンク

画像リンク

変数の説明すると
dir 方向
limit 移動限界
移動後、X座標が少数になるのはdeltaTimeを掛けているからなので、まぁこの辺も移動にぴったしな整数にするという事も勉強になる修正かなと思います
97
(1): 2018/06/28(木)14:20 ID:9SECcI4o(1/2) AAS
んじゃ、せっかくだからケチつけてみようかな。

サンプルなんだから分かりやすく書いたほうがいいよ
ってことで、v2posのスコープが広すぎる。Update関数内のローカル変数でいい。ってかv2pos.xしか使ってないんだからfloat pxにしとけばいいだろ。理解するのに30秒かかったわ。(変数生成負荷を嫌ったんだろうけど、見やすさは重要だと思うんだ)

てかlimitって名前が分かりにくい。x座標の目的地なんだからtargetXとかでいいんでね?30秒(略)
98
(1): 2018/06/28(木)14:28 ID:9SECcI4o(2/2) AAS
ついでに、dirこそUpdate関数内ローカルでいい。
int dir=tfTriangle.position.x<limit?1:-1;
って書いとけばcheckrightのなかでdirをゼロにする必要もない。
99
(1): 弟子 ◆rZPPjYuxmQ 2018/06/28(木)14:29 ID:/UzN8HYz(2/9) AAS
>>97
これ悪い例ね
pxにして直接potisionに代入できないから、たぶんこの人は作ったこと無くて覚え立てのスコープとか使ってわざわざ自分の才能のなさを書きにきてるのね
そんな時間あるなら自分流のサンプル作って出せばいいのに
100
(2): 2018/06/28(木)14:39 ID:UPpeKgHO(1/6) AAS
つーかbasicからやってるような人間がリファクタリングして他人に見せる用として提示するコードがこれなの?
変数大文字から始めるわ、ハンガリアンつけるわでびっくりなんだけど
初学者のため思うならこそちゃんとしたコード見せてあげるべきなのに
101
(1): 2018/06/28(木)14:53 ID:/+kZ1wVw(3/9) AAS
>>100
ハンガリアンもスネークも人それぞれだろ。初心者スレでそんな細かいことで煽るなよ。

こういう記法がいいと思うってアドバイスだけでいいじゃん。

ちなみに俺はローワーキャメルが好きだ。
記法についてはここな。
外部リンク:www.google.co.jp
102: 2018/06/28(木)14:56 ID:UPpeKgHO(2/6) AAS
vector2.zero知ってるならrightやleftも使おうよ
なんすか、dir=1って

なんでv2pos.xに代入したあとcheck関数呼んでからv2posを代入してんの?
check関数でなにかしてるわけでもないならそいつらあとでいいよね?

check関数切り替えてるけど切り分け方がよくわからん
キー入力、移動先計算、移動方向判定、移動
移動方向判定だけなんで関数化したの?checkって名前もどうかと思うけど、まぁ命名はいいや
103
(1): 2018/06/28(木)14:57 ID:/+kZ1wVw(4/9) AAS
ハンガリアンに否定的なサイトしか見つからなかったが、ハンガリアンにも間違ったコードが間違って見えるって長所があるからな
104: 2018/06/28(木)14:59 ID:UPpeKgHO(3/6) AAS
>>101
人それぞれだけどサンプルとして提示するならせめて公式に合わせるべきでは?
このコードを参考にしてください、って初心者に提示してるんだよ?
if使うんですか?ってレベルの初心者に
105: 2018/06/28(木)15:01 ID:UPpeKgHO(4/6) AAS
>>103
システムハンガリアンとかでググればハンガリアンの本来の意味を解説したとこ見つかるよ
間違ってもGameObjectだからgoってつけようなんて発想にはならん
106
(1): 2018/06/28(木)15:11 ID:h3xp0Kjr(1) AAS
>>99
変数生成負荷とか言ってるんだからfloat型pxをxにしたnew Vector2を生成しろってことだろ
107: 2018/06/28(木)15:17 ID:K46AO26G(1) AAS
俺、駄目なハンガリアンの使い方してるわw
勉強になるなぁ
108
(1): 弟子 ◆rZPPjYuxmQ 2018/06/28(木)15:20 ID:/UzN8HYz(3/9) AAS
大漁だなw
サンプル作れないけど文句しか言えない人がこんなに居るんだねー
一応ここは素人が素人に答えるスレなので、素人にも分かるようにみなさんもサンプル提示すればいいと思うよ

きっと頭いいから見やすくて分かりやすいサンプル提示してくれるんだろうなぁ
だよねー
まさか、文句だけ言ってプログラム書けないとかないよね?
109: 2018/06/28(木)16:01 ID:qauh58MA(1) AAS
上のサンプルで充分だろ。
揚げ足とってウダウダ言っても、質問者の為にならんぞ。ほんとケチだけは立派なんて頭悪すぎるから辞めなよ。
110
(1): 2018/06/28(木)16:07 ID:/+kZ1wVw(5/9) AAS
>>108
俺のスパゲティーコードでいいならのせるぞ
111
(1): 弟子 ◆rZPPjYuxmQ 2018/06/28(木)16:07 ID:/UzN8HYz(4/9) AAS
最後のサンプル
Unityという事でアニメにして動かしてみた
まぁこういう事も出来るという事で…

画像リンク

画像リンク

画像リンク

つまり何が言いたいかというと、一つのやりたいことを行うのに沢山のやり方があって
そのどれをやってもいいしコードの書き方も色々とあるわけさ
まぁ仕事として他人と共同で作成とかになるとコード規約とか出てくるけど
まぁこんなとこでホビーとしてやる分には、まず動かしてみる事が一番大事
口だけで文句言うのが一番進歩もしないって事よ
112: 弟子 ◆rZPPjYuxmQ 2018/06/28(木)16:11 ID:/UzN8HYz(5/9) AAS
>>110
是非是非、他人のコードはいい勉強になりますので見て見たいです
自分では思ってもみない「気づき」が必ずあるので

>>111
public Transform trTriangle;
private void Awake()
{
trTriangle = GetComponent<Transform>();
}
これ使ってないので外すの忘れました^^;
113: 2018/06/28(木)16:42 ID:UPpeKgHO(5/6) AAS
111が初心者向けとしてのサンプルとしては一番良いと思う
なんでactiveの切り替えなんてトリッキーとも取れるような手法を一番に持ってきたんだろう
animatorだと他の要素を加えるときに制約になる可能性があるから、別手法として96みたいにすることもできるって流れが普通だと思うけど
114: 2018/06/28(木)17:06 ID:/+kZ1wVw(6/9) AAS
とりあえずてきとうに作った。
自分でもクソコード書いてるかわからんからどんどん指摘してくれ。よくない癖とかついてそうで怖いからな。
画面内に収まるようにもしてみた。
画像リンク

115
(2): 2018/06/28(木)17:06 ID:/+kZ1wVw(7/9) AAS
とりあえずてきとうに作った。
自分でもクソコード書いてるかわからんからどんどん指摘してくれ。よくない癖とかついてそうで怖いからな。
画面内に収まるようにもしてみた。
画像リンク

116: 2018/06/28(木)17:07 ID:/+kZ1wVw(8/9) AAS
うわ、連投すまん。
117: 2018/06/28(木)17:17 ID:UPpeKgHO(6/6) AAS
>>115
特に気になるとこ無い気がする
min maxは画面サイズが変更されたときに再計算すればいいじゃないとか思ったけど、この程度の処理気にするもんでも無いし
118
(2): 弟子 ◆rZPPjYuxmQ 2018/06/28(木)17:42 ID:/UzN8HYz(6/9) AAS
>>115
GetAxis便利ですよねー
ただ今回の最初の要求って>>79なので上下いらないかなと思うのです
それと、位置移動なんですが、これって指定位置で止まるんでしょうか?
ちなみに自分はSerializeFieldの使い方知らないのですけど
TransformがPrivateなのですが、これってどこで指定するんでしょうか?
インスペクタじゃ出来ないですよね?
119: 弟子 ◆rZPPjYuxmQ 2018/06/28(木)17:44 ID:/UzN8HYz(7/9) AAS
あ、あとspeedもSerializeFieldになってますけど
ただこちらも初期値入ってないけど、もしかしてSerializeFieldにするとどっかで初期化されるというか
アタッチしたオブジェクトの何かを持ってきてくれるのでしょうか?

ちょっと自分にはわからない事が多いかもしれません><
120
(1): 2018/06/28(木)17:55 ID:/+kZ1wVw(9/9) AAS
>>118
SerializeFieldはprivateでもインスペクタで値を設定できるようにする属性だよ。

publicにしたらどこから値が変えられるかわからないからprivateにしてるんだけど、それじゃインスペクタで参照できないからこの属性で強制的にシリアライズしてる。
121: 2018/06/28(木)18:57 ID:H6a6imyl(1) AAS
>>118
止まるというより2点で指定された長方形区画から外れると枠上に移動するようになってないか
122
(1): 弟子 ◆rZPPjYuxmQ 2018/06/28(木)19:22 ID:/UzN8HYz(8/9) AAS
>>120
なるほど、これは便利な機能ですね!勉強ななりました!
ありがとう
123: 2018/06/28(木)19:37 ID:TZKnsOc7(1) AAS
>>106
俺が反論しようとしたポイント先取りするなよwww分かってくれてありがとう!

>>98のコードだと振動しちゃうので、そっち突っ込まれるかなと思ったけど、検討違いな突っ込みだったのでびっくりだよw
124: 2018/06/28(木)21:57 ID:cx/Kc4dr(1/2) AAS
>>79
int[] x=new int[]{-8,-4,0,4,8};
int sw;int dir;int n=2;float nextX;
void Start(){transform.position=new Vector2(x[n],0);}
void Update () {
if(sw==0){
if(Input.GetKeyDown(KeyCode.A)&&n>0){sw=1;dir=-1;n=n-1;nextX=x[n];}
if(Input.GetKeyDown(KeyCode.D)&&n<4){sw=1;dir=1;n=n+1;nextX=x[n];}
}
if(sw==1){
transform.Translate(new Vector2(0.1f*dir,0));
if(dir==1&&transform.position.x>nextX){sw=0;transform.position=new Vector2(nextX,0);}
if(dir==-1&&transform.position.x<nextX){sw=0;transform.position=new Vector2(nextX,0);}
}
}
125: 2018/06/28(木)22:00 ID:cx/Kc4dr(2/2) AAS
floatにする必要なかったな
1-
あと 877 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.025s