[過去ログ] 【ゲームエンジン】Unity初心者質問スレBuild4 (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
67(3): 2020/04/10(金)13:32 ID:01H+T9O6(1/4) AAS
設置したオブジェクトが数秒後に爆発し、ダメージを与える機能を作っています
設置できるオブジェクトはそれぞれ形が異なり、その形に応じて爆発の形と範囲を動的に変更したいのですがやり方がわかりません
例えば、球状や正方形なら爆発は球状に、長方形ならカプセル状に爆発と範囲を広げたいです
何か良い方法はありませんでしょうか
82(3): 2020/04/10(金)19:47 ID:01H+T9O6(3/4) AAS
>>73
>>67
>設置できるオブジェクトはそれぞれ形が異なり、その形に応じて爆発の形と範囲を動的に変更したい
>例えば、球状や正方形なら爆発は球状に、長方形ならカプセル状に爆発と範囲を広げたいです
これ以上詳しくとなるとどういう情報が必要なんでしょうか?
・爆発の形状をスクリプトで動的に変えたい
要点はこれだけなのですが
検索してもノーコーディングでレンダラーをいじる記事しかヒットしません
178(3): 2020/04/19(日)04:12 ID:1PPWw4FK(1/3) AAS
キーを押したら平行ライトの角度が変えられるスクリプトで質問したいです。
元のライトの角度が(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;
}
206(4): 2020/04/20(月)21:03 ID:zd2flDEV(5/7) AAS
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);
}
とにかく手探りで書いてみました。
実行したところ、やはり弾が生成された地点で止まってしまいます。
どこを直せばいいのでしょうか…
230(3): 2020/04/22(水)11:29 ID:VQM8R+FC(1/3) AAS
プレハブについての質問です。
すでに存在するオブジェクトに子としてプレハブを複製しようとしたときの座標がうまく設定できません。
スクリプトではこんな感じ記載しています
------------
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をローカル座標として設定したい状態です。
267(3): 2020/04/25(土)13:09 ID:c8LTCDvQ(1/3) AAS
動画リンク[YouTube]
アニメーションクリップに効果音を付けて4種類のSEの中からランダムで音が出るようにしているのですが、
二回続けて同じ音が出ないようにする方法はないでしょうか。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ken_furu : MonoBehaviour
{
public AudioClip[] _SE; //SEが4個入っています。
private AudioSource audioSourse;
Animator animator;
void Start()
{
animator = GetComponent<Animator>();
audioSourse = GetComponent<AudioSource>();
}
public void SE()
{
int a = Random.Range(0, 4);
audioSourse.PlayOneShot(_SE[a]);
}
}
このスクリプトを音を鳴らすアニメクリップが付いたオブジェクトにアタッチしています。
二回続けて同じ音が出ないようにする方法があったら教えてください。
外部リンク:thuploader.orz.hm プロジェクトファイル
279(4): 2020/04/25(土)17:57 ID:P2OYyiKX(1/2) AAS
Unityで2Dゲームを作ろうとしていますが、小さい表示枠と大きい表示枠について教えて下さい。
画像をSceneに配置すると小さい枠の中に置いたものが実行時に表示され、座標はたとえば-2〜+2です。
ヒエラルキーからUIのButtonを配置すると大きい枠の中に置かれ、座標は0-1000などの設定した画面サイズの値になります。
2つの座標系があるようなのですが、Sceneで見ると重なっていないのに実行すると上記の2つ枠は重なって表示されるようです。
なんでこんなことになってるんでしょうか?
両者を混在して使ってると実行環境によってずれが生じそうですが大丈夫なんでしょうか?
また「Unityの教科書 Unity 2019完全対応版」を読みましたが、次に読むと良さそうな本があったら教えて下さい。
301(3): 2020/04/29(水)07:31 ID:C9mEi4oT(1/2) AAS
>>298
自分も初心者だけど(しかも始めたばかり)
教本のサンプルスクリプトを改変しながら一本作ったところ
2Dの画像はUIから作る他にヒエラルキーに直接ドラッグ&ドロップする方法があってこの方法で作ったゲームオブジェクトはUIから作ったimageとは仕様が違うということがわかった
全く同じスクリプトを関連づけても動作しなかったり
等倍のはずなのに画像の表示サイズが微妙に大きかったり
UIキャンバスに入れると表示されなくなったり
別の教本では2Dオブジェクト→spriteで同じような用途の画像オブジェクトを作ってたからヒエラルキーにドラックドロップするとspriteになるのかも
Collider2Dで他のオブジェクトとの衝突判定を付けたい2D画像はそうやって配置するというところまでは理解できたけどそれ以上はさっぱりわからない
どれが正しいかじゃなくて用途によって使い分けるみたいだけどね
329(3): 2020/04/30(木)11:41 ID:V6Pk2JwW(1/3) AAS
画像リンク
ボタンを押すと5の星だけが表示されるスクリプトなのですが、
親になっている星のオブジェクトをpublicで参照するやり方ではなくて
Findでヒエラルキーから探してくるやり方に変更したら動かなくなりました。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Button5star : MonoBehaviour//ボタンにアタッチ
{
//public Transform STARParent; //publicで参照するのをやめる
Transform STARParent = GameObject.Find("starParent").GetComponent<Transform>();//Findで探したい
public void button5star()
{
for (int i = 0; i < STARParent.childCount; ++i) // for文
{
STARParent.GetChild(i).gameObject.SetActive(false);//STARParentの子を一旦全部消す
STARParent.transform.Find("star (5)").gameObject.SetActive(true);
}
}
}
-----------------------------
starParentは空のオブジェクトで子のstarは画像のspriteです。
Findで探している部分が間違っているのでしょうか?
344(3): 2020/05/01(金)20:23 ID:HXkpQ0jK(1) AAS
おすすめのアセット教えてください(´・ω・`)
381(3): 2020/05/08(金)10:10 ID:UflBmPCI(1/4) AAS
>>349
質問させて下さい。
ターン制バトルのRPGなどで敵ABCが居たとして、
それぞれの攻撃の処理にモーションを含めて1秒ずつかかるとします。
Aの攻撃が終わったらBの攻撃〜とする時にコルーチンなどで1秒毎に行動させる方法が思い浮かびます。
しかし、ゲームを作っているうちにAのモーションは2秒かかるという状況もでてくると思います。
その場合はAの行動が終わった事をフラグにして、アップデート関数でif(A行動済み==true)という風に作るのでしょうか?
それとも、Aの行動が終わった時に呼び出す〜みたいな関数があるのでしょうか?
アップデートを極力使わずにプログラミングしているのですが、アクションゲームなどは常にアップデート多様していると思うのであまり気にしないで使っていいのでしょうか?
ご指導頂ければと思います。
よろしくお願い致します。
421(3): くまじょ 2020/05/12(火)14:45 ID:BsMD4e4s(1/3) AAS
unityで2dで開発してます
マウスボタンが押されたかの方法をネットで調べて
Update()でif (Input.GetMouseButton(0))
によりマウスボタンが押されたか判定が実現できました
マウスボタンを押していないときも含めてマウスの座標も得られました
しかし
ドロップダウンのリストが現れているときも
Update()でボタンダウンとかできてしまうので困っています
どうすれば
ドロップダウンのリストが現れているとき
Update()でのマウス位置やボタンダウンに関する処理を
させないようにできるのでしょうか?
自分なりに調べたり試したところUpdate()では何もしないのがいいのかな
ドロップダウンのリストが現れているときというのがわからないから
ドロップダウンのリストの生成やアクティブやZオーダーもこちらで制御できないし
キャンバス2つ用意してEventSystemでなんとかするのかな
508(3): 2020/05/21(木)19:31 ID:5tpteR2O(1/2) AAS
>>506
逆に考えるんだ。
aをデュプリケイトして、オブジェクトをbに差し替える。
538(3): 2020/05/24(日)18:21 ID:N01GJ1S3(1/4) AAS
はじめまして。
質問させて戴きます。
TPSのゲームの簡単なスクリプトを組みまして、少し前に銃を撃つスクリプトを作成しました。
簡単に言うと、弾丸として作成したプレハブを、クリックするたびに銃口(と定義した、銃の先端くらいに配置した空オブジェクト)から銃の向きに真っ直ぐ打ち出す....と言う簡単なものです。
作った時は何も問題なく使えてたのですが、そのあとそのスクリプトはほとんど触っていないのに、銃口より遙かに下から射出されるようになっていました。
それも毎回ではなく3回に一回はちゃんと銃口からでてくるのです。
PCが7年前のものなのでスペックのせいで処理がちゃんとできていないのかな?とも思いましたが、60fpsは出てるような状態でも同じことで、かと言ってスクリプトも単純なものでおかしい点もないように見えます。
上記で頭を抱えているのですが、何かアドバイスをいただけないでしょうか。
よろしくお願いします。
631(3): 2020/06/05(金)08:04 ID:udCxxSt+(2/3) AAS
>>630
0時くらいからずっとハマってたのですが、1フレーム後から(?)しか受け付けない初期化問題だったようです。
AwakeとStartに分けてもエラーだったのでずっと気付かなかったのですが、StartとUpdateに分けたら動作しました。
別の質問になってしまうのですが、こういう場合Updateで一回しか通さない様にして使うしかないのでしょうか?
ゲームスタート直後の遅延初期化で良い方法ってありますか?
635(3): 2020/06/05(金)15:15 ID:6nBhQE/c(1/2) AAS
ゲームオブジェクトが参照している3Dモデルを変更(更新)する方法をご存じないですか?
Blenderで自作した3Dモデルを使っていたのですが、アニメーションを追加したいので新しい.fbxに置き換えたいです。
よろしくお願いします。
797(3): 787 2020/06/23(火)02:44 ID:+QcZMjB7(1/3) AAS
>>789
Destroy()で破壊する方法を使うことにしました。
Scene4 Scene5 Scene6 だけで音楽の付いたオブジェを鳴らしたいので
SceneManager.GetActiveScene().name でシーン名を取得して
------------------------------------------------------------------
using UnityEngine;
using UnityEngine.SceneManagement;
public class musicplayer : MonoBehaviour
{
private void Awake()
{
if (SceneManager.GetActiveScene().name != ("Scene4" || "Scene5 " || "Scene6"))
{
Destroy(gameObject);
}
else
{
DontDestroyOnLoad(gameObject);
}
}
}
----------------------------------------------------------
このようにコードを書いたら
//CS0019 演算子 '||' を 'string' と 'string' 型のオペランドに適用することはできません
というエラーが出たのですがこの場合どのように対処したらいいのでしょうか。
923(5): 916 2020/06/29(月)23:34 ID:/o8YShXz(1) AAS
>>918
おかげさまで何とか打開できました。
windowsのアプリケーションにするとウィンドウを縦方向に縮ませたときは
画面が一定の比を保って収縮しますが、
横方向に縮ませたときは収縮せずに見切れていく仕様みたいなので、
Canvas Scaler の Screen Match Mode を Match Width Or Height にして
Match のバーを1(Height)にすることで解決できました。
横方向にウィンドウを縮ませたときは収縮せずに見切れていくのはUnityの仕様なのでしょうか?
とにかくこの方法で解決できました。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.107s