【ゲームエンジン】Unityなんでも質問スレpart11at GAMEDEV
【ゲームエンジン】Unityなんでも質問スレpart11 - 暇つぶし2ch542:名前は開発中のものです。
23/09/10 15:16:17.39 nCKHuG8g.net
>>540
昔からおるよ

543:名前は開発中のものです。
23/09/10 21:08:25.55 DCSKbLST.net
2d移動についてなのですが、positionの変更による移動だとなんだかもっさりします
何か理由はあるのでしょうか?
velocityによる移動でも良いかなとは思いますが、軽い方法はありますか
void Update()
{
horizontalMovement();
VerticalMovement();
}
void horizontalMovement()
{
float horizontalKey = Mathf.Round(Input.GetAxis("Horizontal"));
if (horizontalKey > 0)
{
this.transform.position += new Vector3(1, 0, 0) * speed * Time.deltaTime;
}
else if (horizontalKey < 0)
{
this.transform.position += new Vector3(-1, 0, 0) * speed * Time.deltaTime;
}
else
{
horizontalKey = 0;
}
}

544:名前は開発中のものです。
23/09/11 06:05:55.70 CutQJqWR.net
調べたらtrasnformの移動って重いんやね
velocityにするです

545:名前は開発中のものです。
23/09/11 12:57:05.38 hY5yKmdD.net
GetAxisRawで四捨五入せず使ってはどうかしら?

546:名前は開発中のものです。
23/09/11 13:09:39.79 CutQJqWR.net
ラウンド外してみました
しかし、トランスフォームを使った移動自体が重いみたいです
なんだかもっさりしているのでvelocityを使います
重力ゼロなので、物理は使わずコリジョンだけなんですけどもね

547:名前は開発中のものです。
23/09/11 14:20:55.45 hY5yKmdD.net
補足ですが、
GetAxisはキーボードでの入力であっても0から1の値に時間をかけて変化します。
mathfで四捨五入したら0.5より大きくなるまでは0に切り捨てられ、動き出しが遅れます。
なのでGetAxisに四捨五入はやったらいかんです。
また、ボタンを離し1から0への変化にも時間がかかるので、ボタン離してから止まるまでもラグがあります。
ここでもっさりしていませんか?
入力された方向の1or-1の値を即座に返して欲しいならばGetAxisRaw使うのです。

548:名前は開発中のものです。
23/09/11 14:32:19.91 CutQJqWR.net
>>547
ありがとう
getaxisrawってのを使ってみました
これは自動的に丸めてくれるんですね
getaxisだと0か1かではなくジワーと動くので、getaxisrawのほうがいいかもですね
ありがとう

549:名前は開発中のものです。
23/09/11 17:35:22.27 CutQJqWR.net
たびたびすみません、2d移動させたいのですが、横移動している間は縦移動しない、縦移動している間は横移動しない、という条件にするにはどう書けばいいんでしょうか?
プログラミング脳がなくてすみません
void characterMovement()
{
float x = Input.GetAxisRaw("Horizontal");
float y = Input.GetAxisRaw("Vertical");
rb.velocity = new Vector2(x, y) * speed;
}
これだと斜め移動が可能になります

550:名前は開発中のものです。
23/09/11 18:42:19.57 hY5yKmdD.net
とりあえず、とにかく簡単にナナメ移動は禁止よ~としたいならば、
キーの入力値の取得後に、横移動の入力値が取れたら縦移動の値は強制的に0にしてしまえ!という条件判断入れる。
縦移動入力は、xが0の時にだけ反映される。
if(x != 0f){
y = 0f;
}
問題点は斜め入力時は必ず横移動が優先されると言う事だが…
横移動してる時に縦入力は受け付けたくないし、
縦移動してる時に横入力は受け付けたくないんじゃーと言うならもう少し複雑になる。

551:名前は開発中のものです。
23/09/11 19:38:23.63 CutQJqWR.net
ありがとう
小一時間考えてみたけど自分にはロジックが思いつかない
ゲームの本質部分でもないので、今回は諦めます(*´ω`*)

552:名前は開発中のものです。
23/09/11 21:12:51.17 y0R59DfA.net
>>551
rb.velicityのところをifで囲んでx!=0&&y!=0ならvector2.zeroにしたらいいと
思うよ。
elseにはrb.velocity=new vector2(rb.velocity.x+x,rb.velocity.y+y)
でいけないかな?

553:名前は開発中のものです。
23/09/12 04:09:32.73 FBCYzsoY.net
>>552
ありがとう
いけました
プレイしてみて操作しやすい方式を選ぼうと思います(*´ω`*)

554:名前は開発中のものです。
23/09/13 06:32:40.63 HkRVH3vp.net
ちわす
倉庫番的なゲームを作りたいのですが、キャラクターがブロックを押す動作の作り方を知りたいです
二次元配列でブロックを配置しているのですが、キャラクターの移動先の番地にブロックがあった場合、キャラの移動方向にそれを移動すると言った考え方でいいでしょうか?

基本的な考え方を知りたいです

コリジョンつけてやる方法もあるとは思いますが、余計にややこしくなりそうですね
今はおそらく配列を使ったやり方で取り掛かってます

555:名前は開発中のものです。
23/09/13 07:16:01.37 droDxID/.net
ちわすとかどもすとかいちいち気持ち悪い言葉遣いは
どうにかした方がいい
俺ら友達でもないし先輩後輩でもない
赤の他人なんだから

556:名前は開発中のものです。
23/09/13 10:59:10.85 NhNUwKHN.net
どうもすみません……

557:名前は開発中のものです。
23/09/13 11:08:11.53 droDxID/.net
>>554
俺が昔読んだ本では配列で処理していて
自キャラから見て進行方向にブロックが
ある場合、そのまたひとつ向こう側を
チェックして、何も無い場合ブロックと
自キャラを移動、何かあった場合移動は無効
という仕様だった

558:名前は開発中のものです。
23/09/13 14:09:45.99 HkRVH3vp.net
>>557
ありがとうございます
配列のパズルって案外難しいですよね チャレンジします(*´ω`*)

559:名前は開発中のものです。
23/09/13 14:12:58.06 ATros1XL.net
(*´ω`*)お前質問するときも顔文字使えや?みんな無視してくれるから(*´ω`*)

560:名前は開発中のものです。
23/09/13 22:36:31.19 fiBpMonJ.net
Scope.SetVariable("hoge", (string str) => Console.Write($"Hello, {str}!"));
Engine.Execute("hoge('World')", Scope);
------------------
Console出力 : Hello, World!
↑はIronPythonの例ですが、こんな感じで文字列からインタプリタ的にC#側のオブジェクトを操作したいです
マルチプラットフォームで似たようなことをする方法ってありますか?
クラスが存在する程度に高級であればPythonに拘りはないです

561:名前は開発中のものです。
23/09/14 01:29:36.75 ZfVGpqaa.net
すみません、利用規則についての質問ですが
来年から課金体系が変わるとアナウンスされてますが個人制作のフリゲの扱いは何も変わらないのでしょうか

562:名前は開発中のものです。
23/09/14 02:06:05.54 vnwuY/kN.net
>>561
変わらない


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch