Notifications
bg
たーくん
0
Likes
0
Followers
0
Connections
All
Articles0
Games0
Showcases0
Column0
Jobs0
あれからなのですが、アニメーターの存在を知って、アニメーションはそっちで作成できたほうが絶対いいよねと思い下記サイトを見ながら実装してみています
https://qiita.com/_tybt/items/bc9c3be75c04ab547c35
(※prayerだけ3枚目の添付を使ってる感じです)

順調に進んでたのですが、上記URLのスクリプト2つをプレイヤー(char_cro1_0)にアタッチしても
ゲームの再生でアニメーションしてくれない状況です。

[添付画像1と2]を見ていただくと構造が大体伝わると思うんですが、
困っているのは[添付1]の真ん中のエラーが下記で出ているんですね。

Parameter 'x'(または'y') does not exist.
UnityEngine.Animator:SetFloat(String, Single)
AnimationStateController:setStateToAnimator(Nullable`1) (at Assets/AnimationStateController.cs:63)
AnimationStateController:Update() (at Assets/AnimationStateController.cs:34)

Animator内のSetFloatでxとyを入れれないよ、ということのようで(TT)

で、今回のAnimator設定は2枚目のスクショにあるんですが、
[char_cro1_0]内の[Blend Tree]のParametersに[x],[y]の名前にしてるんですが、

URL説明の『Parametersにパラメータの追加
上記の次にこのAnimator Controllerで扱うパラメータを追加します。
移動ベクトルに応じて変化させたいので xとyという名前で追加。
型はFloatを選びます。』

の部分で、xとyは[添付画像2]の部分を変更している理解なんですが、
Float型のセットが実際どこでできるのか分からないんですよね...(ググったりもしたんですがダメでした、、、)

上記2枚目の画面のParametorsに対して、Float型のx,yをセットする方法わかるかたいらっしゃいましたらご教授願えますでしょうか??

または最終的にはAnimatorを使ってRPGみたいな上下左右ができれば何でも良いのですが他のトラシューお持ちのかたいらっしゃいましたらお願いいたします!!(><)

2 months ago
Reply@増田樹上記の次にこのAnimator Controllerで扱うパラメータを追加します。 移動ベクトルに応じて変化させたいので xとyという名前で追加。 型はFloatを選びます。 この指示に従って下の画像の赤丸の部分でパラメータを作りましたか? 作ってないなら作ってください。 https://i.imgur.com/RtQ8KPS.png あとそういうのはAnimatorより(厳密にはAnimatorも機能させますが)SimpleAnimationでやったほうがいいと思います。 ぜひ調べてみてください。
座布団さんの画像見て初めてきづきました、Parametorタブの事だったんですね、、、初見で気付けなかったとです、、、orzこれでやってみたらうまく動きましたありがとうございます泣!!それとSimpleAnimationの存在もありがとうございます!!いろんな実装方法があるんですねぇ、、確かに今のやり方もアクションが増えてきたら面倒になりそうなので、シンプルアニメのほうも時間を見つけてやってみようと思います!アドバイスいただきありがとうございます、!!(TvT)
2 months ago
上記の次にこのAnimator Controllerで扱うパラメータを追加します。 移動ベクトルに応じて変化させたいので xとyという名前で追加。 型はFloatを選びます。 この指示に従って下の画像の赤丸の部分でパラメータを作りましたか? 作ってないなら作ってください。 https://i.imgur.com/RtQ8KPS.png あとそういうのはAnimatorより(厳密にはAnimatorも機能させますが)SimpleAnimationでやったほうがいいと思います。 ぜひ調べてみてください。
たこ焼きゲームの進行を一旦とめて、アクション要素ももたせたいのでスーパーマリオ風のチュートリアルを下記URLの通り、初プロジェクトからやってみてます
https://www.go-next.co.jp/blog/web/10988/

カメラを水色にして、ブロックとプレイヤーを配置してプレイヤーにスクリプトを入れるところまでやってみたのですが、
Gameウィンドウが水色背景でなく、暗めな青色になっていて、
かつSceneビューの変更が反映されていないんですね。

ゲームを再生してみると、なぜかシーンビューの右下に
カメラプレビューって小さいのが出てきて、ここでは見れるんですが、
たこ焼きゲームみたくGameビューに反映させていない状態です。

プレイヤーが操作できないって状態でもあるのですが、まずはこの青色の状態を、カメラプレビューの画面のようにちゃんと反映させるにはどうすれば良いでしょうか?

そもそもこの暗めな青色はどのオブジェクトが反映されている状態になるのでしょうか??(▼yuka、ってのは床で、中にブロックを沢山入れてるだけになります)

2 months ago
Reply@age AA確かに複数カメラある場合に起きるようですね、 https://imgur.com/A0nEt1y https://i.gyazo.com/66d1b06132a78d5ec9a9760b82659d4f.png カメラアイコン気にはなってたけど、あのページ通りに作ってと書いてあったから、まさかとは思ってたけどw
ええええまさしくでしたか!! (TT)自分もまさかあれ全部カメラがコピーされてるなんて思ってませんでしたいつのまに(TT)w そんなにカメラいらない〜笑 2Dでは1個で基本おkですよね。ありがとうございました!><ペーペーなのでまたちょくちょく書き込むかもしれませんが生暖かく見守ってくれると嬉しいです〜(TT)
2 months ago
Reply@matsumoto toshiki予想と違ってたけどなんだか解決したみたいでよかったですw 小さいプレビューは選択しているカメラのもので Gameウィンドウに出るのはCameraのDepth値が大きいものですね 参考サイトが古いのでUnity公式のLearnを見てみるのも良いかもです https://learn.unity.com/tutorial/project-introduction (ほかにもたくさんありますよ)
ありがとうございます(TT)自分がカメラ増やしてたのが原因ですね(TT)Block_3の背景色と同じなのどうやって見つけられたのかいまだに気になってますw Learnは時間作ってみてみますね、勉強はじめて1ヶ月もたってないペーペーなので勉強するのが超多くてすごいですね、Unityふかい、、、
matsumoto toshiki
3DCG Creator
2 months ago
予想と違ってたけどなんだか解決したみたいでよかったですw 小さいプレビューは選択しているカメラのもので Gameウィンドウに出るのはCameraのDepth値が大きいものですね 参考サイトが古いのでUnity公式のLearnを見てみるのも良いかもです https://learn.unity.com/tutorial/project-introduction (ほかにもたくさんありますよ)
aA
2 months ago
確かに複数カメラある場合に起きるようですね、 https://imgur.com/A0nEt1y https://i.gyazo.com/66d1b06132a78d5ec9a9760b82659d4f.png カメラアイコン気にはなってたけど、あのページ通りに作ってと書いてあったから、まさかとは思ってたけどw
View More Comments
先輩方のアドバイスのおかげで無事にたこ焼きをクリックすると文字"1"を出力しダメージを与える部分まで実装できました。
今回ですが、下記サイトのようにダメージ文字がぴょんって跳ねてくれません、、、(そのまま下に落ちてく)

http://satoukibi.hatenablog.com/entry/2017/02/25/Unity_でダメージUIを作る(2D)

エネミー(たこ焼き)をクリックすると下記[DamegeObj]が生成されるようにし
public void OnMouseDown()
{
〜略〜
// エネミーと同じ位置にダメージ[DamegeObj]を生成
Instantiate(DamegeObj, new Vector3(this.transform.position.x, this.transform.position.y, 0)
, transform.rotation).GetComponent<TextMesh>().text = "1";

その後[DamegeObj]の"1"は出てくるんですが、[DamegeObj]にアタッチした[DamageTextSCR.cs]が動作していない状況なんです。
[DamageTextSCR.cs]のStart()は下記にしてます

// Use this for initialization
void Start()
{
Debug.Log("◼◼DamageTextSCRスタート開始◼◼");

GetComponent<Rigidbody2D>().AddForce(new Vector3(Random.Range(-80, 80), Random.Range(100, 180), 0));
StartCoroutine(DestroyObject());
}

上記の◼◼DamageTextSCRスタート開始◼◼とログに出てくれない事と、あとはエラーではないですが下記警告が出ています。

The referenced script (DamegeTextSDR) on this Behaviour is missing!
UnityEngine.Object:Instantiate(GameObject, Vector3, Quaternion)
Enemy:OnMouseDown() (at Assets/Scripts/Enemy.cs:107)
UnityEngine.SendMouseEvents:DoSendMouseEvents(Int32)

DamegeTextSDRが見つからない?らしいですが、
添付写真を見るとわかる通り、DamejeObjにDamegeTextSDRをアタッチしてるんですよね。

この状況を打破して、生成された[DamejeObj]に対して、アタッチ済みの[DamageTextSCR.cs]のStart()を動かせるようにするにはどうすれば良いでしょうか?

2 months ago
またもやフォローありがとうございます!!><なるほど空行足して再度コンパイルしなおしてエラーをあぶり出すってことですね、再度やってみますね、ありがとうございます!!><
Yuji YASUHARA
Field Engineer
2 months ago
添付画像のところ、 The associated script can not be loaded. Please fix any compile errors and assign a valid script. とあり、これは「スクリプトにコンパイルエラーが生じているので読み込めません」という意味ですね。 どこかでコンパイルエラーが起きているはずです。それは DamageTextSDR.cs ではないかもしれません。 もしもエラーメッセージが見つからないようでしたら、どれでもいいのでどれかスクリプトを変更して(私は空行を一行足す、ということをよくやります)再度コンパイルエラーが出るのを促し、コンソール画面を注視するとよいと思います。
>Yujiさま リプ欄では画像がアップできないようなので再度新スレで写メつけて質問します(すみません)

Yujiさまの質問のレスですが、おっしゃる通りEnemy.csはEnemyプレハブにアタッチしています。

[おそらく Enemy.cs を取り付けてあるGameObjectはヒエラルキーに見える Enemy だと思うのですが、そこをクリック]→プレハブの1つ、Enemy(1)をクリック、という意味で理解しました。

クリックした所をスクショしますが、ここに【何も入っていない所にDamegeObjをドラッグ】というのはどの部分に対して移動すれば良いという事になりますでしょうか?(EnemyプレハブのScriptはEnemyをアタッチしてるので、それ以外に何もない部分がある、という意味でしょうか。)

それと自分が勉強不足で恐縮ですが、オブジェクトにアタッチされたCSファイルから別オブジェクト(今回はDamegiObj)をインスタンス化するのに[enemyたこやき]→[アタッチしたenemy.cs]→[DamegeText.cs]をコールしてインスタンス化している理解なのですが、そういう場合でも[enemy]→[DamegeObj]へ関連付けをしないと呼び出せないものなのでしょうか??
(質問の意味が不明の場合はこの部分はスルーで大丈夫です〜><)

2 months ago
Reply@Yuji YASUHARAインスペクター(右のウインドウ)の下のほうに Damage Obj [None (Game Object)] とあります、これのことを言っていました。ここが None なのでエラーが出ていると思われたのです。 実行前に Damage Obj が確定しているのであればその Damage Obj をドラッグしてここにいれることで解決するでしょう。 もし実行時でないと Damage Obj を確定しないのであれば、Start 関数などで、シーン上の Damage Obj を捜索して(GameObject.Find などで)スクリプト上で代入する必要があると思います。 後半のインスタンス化についての質問は、ちと質問内容がわからなかったのですが、上で書いた内容が答えに近いように感じます。Damage Obj というのは原理上、シーン上にたくさん置けてしまうので(いまはひとつであっても)、なんらかの関連付けが必要になります。
ありがとうございます!こういう形で紐付けできるんですね。勉強になりました(><)。無事置けてダメージテキストも出てくるようになったのですが、その後ダメージObjectがぴょんって跳ねないまま下に落ちていってしまう件を次は聞こうと思っていますので、よろしければまたご指導いただければ幸いです、、(TT)
Yuji YASUHARA
Field Engineer
2 months ago
インスペクター(右のウインドウ)の下のほうに Damage Obj [None (Game Object)] とあります、これのことを言っていました。ここが None なのでエラーが出ていると思われたのです。 実行前に Damage Obj が確定しているのであればその Damage Obj をドラッグしてここにいれることで解決するでしょう。 もし実行時でないと Damage Obj を確定しないのであれば、Start 関数などで、シーン上の Damage Obj を捜索して(GameObject.Find などで)スクリプト上で代入する必要があると思います。 後半のインスタンス化についての質問は、ちと質問内容がわからなかったのですが、上で書いた内容が答えに近いように感じます。Damage Obj というのは原理上、シーン上にたくさん置けてしまうので(いまはひとつであっても)、なんらかの関連付けが必要になります。
今回ですが、敵のたこ焼きを2発で倒すようにして、
1発目をダメージ表示したいと考えています。
http://satoukibi.hatenablog.com/entry/2017/02/25/Unity_でダメージUIを作る(2D)
で、上記URLを参考にたこ焼きをクリック(OnMouseDown())の時に、

Instantiate(DamegeObj, new Vector3(0, 0, 0), transform.rotation).GetComponent<TextMesh>().text = "1";

行を実装してダメージObjを呼び出そうとすると、たこ焼きのクリック時に"1"が表示されず、下記のエラーが出てしまう状態です。

UnassignedReferenceException: The variable DamegeObj of Enemy has not been assigned.
You probably need to assign the DamegeObj variable of the Enemy script in the inspector.
UnityEngine.Object.Internal_InstantiateSingle (UnityEngine.Object data, UnityEngine.Vector3 pos, UnityEngine.Quaternion rot) <0x14882a230 + 0x0006a> in <5bcb6821bff24936994feeaed272503d>:0
UnityEngine.Object.Instantiate (UnityEngine.Object original, UnityEngine.Vector3 position, UnityEngine.Quaternion rotation) (at /Users/builduser/buildslave/unity/build/Runtime/Export/UnityEngineObject.bindings.cs:211)
UnityEngine.Object.Instantiate[T] (T original, UnityEngine.Vector3 position, UnityEngine.Quaternion rotation) (at /Users/builduser/buildslave/unity/build/Runtime/Export/UnityEngineObject.bindings.cs:285)
Enemy.OnMouseDown () (at Assets/Scripts/Enemy.cs:106)
UnityEngine.SendMouseEvents:DoSendMouseEvents(Int32) (at /Users/builduser/buildslave/unity/build/Runtime/Export/MouseEvents.cs:187)

EnemyスクリプトのDamegeObj変数を割り当てる必要がある、と言っているようなのですが、きちんとEnemy.csには
public GameObject DamegeObj; // ダメージオブジェクト

を宣言していて、DamegeObjに[DamageTextSCR.cs]も割り当てています。
何が間違っているのでしょうか?どのようにしたらたこ焼きクリック時にダメージ表示できるのでしょうか

2 months ago
>Yujiさま ありがとうございます!おっしゃる通りEnemy.csはEnemyプレハブにアタッチしています。[おそらく Enemy.cs を取り付けてあるGameObjectはヒエラルキーに見える Enemy だと思うのですが、そこをクリック]→プレハブの1つ、Enemy(1)をクリック、という意味で理解しました、クリックした所をスクショしますが、ここに何も入っていないというのはどの部分になりますでしょうか?(ScriptはEnemyをアタッチしてるので、それ以外に何もない部分がある、という意味でしょうか。)どちらにしてもリプ欄では画像がアップできないようなので再度新スレで写メつけて質問しますね、すみません、、、
Yuji YASUHARA
Field Engineer
2 months ago
おそらく Enemy.cs を取り付けてあるGameObjectはヒエラルキーに見える Enemy だと思うのですが、そこをクリックしてインスペクターで見たときの DamegeObj に何も入っていないのではないでしょうか。ヒエラルキーの DamegeObj をドラッグ&ドロップでその何もないところに入れればこのエラーは解消するかな、と想像しました。
2 months ago
▼参考にEnemy.csのOnMouseDown()と宣言部を転記します。DamageTextSCRはそのまま転記しただけなので【http://satoukibi.hatenablog.com/entry/2017/02/25/Unity_でダメージUIを作る(2D)】のDamageTextSCR.csと全く同じです。 /// 敵用の共通スクリプト public class Enemy : Token { // 生存数 public static int Count = 0; float damage = 0.3f; // たこ焼きが敵に与えるダメージ float enemyHP = 1.0f; // 敵のHPゲージ public GameObject DamegeObj; // ダメージオブジェクト // クリックでダメージを与える // HPが0以下になったら破壊 // OnMouseDown関数:対象Objがマウスでクリック(イベント)された時コールされる関数 //
public void OnMouseDown() { // Debug.Log("◼◼OnMouseDownの開始◼◼"); enemyHP = enemyHP - 0.5f; //DamegeObjをインスタンス化(DamageTextSCR.csのスタートを呼び出す)※実際は呼び出されずエラーになる Instantiate(DamegeObj, new Vector3(0, 0, 0), transform.rotation).GetComponent<TextMesh>().text = "1"; Debug.Log("◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼"); Debug.Log("▼▼enemyHP:" + enemyHP); Debug.Log("◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼"); if (enemyHP <= 0f) { // 生存数を減らす Count--; // パーティクルを32個生成w for (int i = 0; i < 32; i++) { Particle.Add(X, Y); } // DestroyObj:オブジェクトをメモリから破棄する関数(Tokenクラスの独自実装の関数) DestroyObj(); }
}
初めまして!!素晴らしい場所ですね、今後ともよろしくお願いします!
https://qiita.com/2dgames_jp/items/11bb76167fb44bb5af5f#プロジェクトの作成
上記ページを参考にたこ焼き爆破ゲームを作成しました。

▼やりたいこと▼
今回、このたこ焼き全てにHPバーを実装させて、何回かクリックで爆破させたいと考えています。(下記参考ページ ※2D用のが見つからなかったです)
https://qiita.com/sakas1231/items/9acd52828204b13c93f1

▼困っていること▼
上記3Dですが参考にして下記のようにしてみました
1.たこ焼きに追随するよう、tako配下にsliderを作成
2.CanvasのRenderModeをWorld Spaceに変更
そうすると、Gameビューからバーが消えてしまいます。

※参考サイトのrectTransformのScaleを(0.1 , 0.1 , 1.0)くらいにしても変わらず、、

▼質問したいこと▼
上記を回避して2Dの画面上でもたこ焼きに付随してHPバーを遷移させたいです。
World Spaceを調べてみたんですけど3Dオブジェクトって書いてあるのでもしかして2Dでは対応してないんでしょうか??
なんとかこのバーを2D上で追随させたいのですが良い方法ありませんでしょうか?

よろしくお願いいたします!!

2 months ago
Reply@Gilberto Bittencourthave you try to set the anchor position and since is in world space try to put the canvas of the HP bar on a sorting layer that is in front of the sorting layers of the background and characters/enemies and since is a world space canvas you just need to update the slider position to follow the exactly position of the character/enemy
>Gilberto Bittencourt-san Once we continue to implement without the enemy status bar. necessary, I try again. Thank you.
Gilberto Bittencourt
Game Developer
2 months ago
have you try to set the anchor position and since is in world space try to put the canvas of the HP bar on a sorting layer that is in front of the sorting layers of the background and characters/enemies and since is a world space canvas you just need to update the slider position to follow the exactly position of the character/enemy
About Me
No description
See more
Skills
No skills added yet
Certifications (0)
Import
See all
たーくん's liked projects (0)
No likes yet
Following (0)
Not following anyone yet
Followers (0)
No followers
Following Companies (0)
Not following anyone yet