UnityでMMO作りたいけどどうする!?(^^ [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/07/16(日) 15:50:08.98ID:wWznjvX2
サーバー代とかはあとで考えまひょう(^^
今はちまちま作りまふ(^^
2017/08/05(土) 14:17:19.91ID:D7XQ/3Kh
<は....より大きいでひた(^^
ところでintを%に変換するにはどうする!?(^^
HP作れなくて詰んでまふ(^^
2017/08/05(土) 14:27:15.18ID:D7XQ/3Kh
気晴らしにお散歩行ってきまふ(^^
家に籠って毎日スクリプトとにらめっこしてたら気が狂いまふよ(^^
2017/08/05(土) 14:47:07.29ID:qSmknjrG
この程度で気なんか狂うか

C#には%型なんてものはねぇんだ
100%を1とみなしたら50%はいくつになるんだ?
というか<=の左辺には一体何がはいってるんだよママン
2017/08/05(土) 16:35:14.68ID:D7XQ/3Kh
HP<=0.5
こうでふか?(^^
これだと変数HPが0.5以下のときに動くと思いまふ(^^
2017/08/05(土) 16:41:36.47ID:qSmknjrG
右辺が比なら
左辺も
「最大値に対する現在値との比」
にして比較すんだ
2017/08/05(土) 16:58:00.12ID:D7XQ/3Kh
HP*0.5<=0.5
HP/2<=0.5
どっちでひょうか?(^^
聞いてばっかりでごめんなふぁい(^^
2017/08/05(土) 17:06:26.87ID:D7XQ/3Kh
両方ダメでひた(^^
2017/08/05(土) 17:17:13.05ID:TcKvTVDT
今からでも遅くないから冗談ということにしてこっそり調べなさい
でないと人がいなくなるぞーーーーーーー!!!
2017/08/05(土) 17:17:31.21ID:fMsX6Qt3
hp/maxhp*100(%)
2017/08/05(土) 17:31:17.22ID:D7XQ/3Kh
>>521でもダメでひた(^^
最初のifは呼び出されまふが(^^
else if以降が呼び出されまふぇん(^^
なぜでふか?(^^
算数って難しいでふね(^^

if (モンスターのHP / モンスターの最大HP * 100 <= 100)
{
Debug.Log("モンスターがHP100%でふ(^^");

}
else if(モンスターのHP / モンスターの最大HP * 50 <= 100)
{
Debug.Log("モンスターがHP50%でふ(^^");
}
else if(モンスターのHP <= 0)
{
Monster死亡処理();
}
2017/08/05(土) 17:41:22.40ID:fMsX6Qt3
100<=50
2017/08/05(土) 17:45:46.95ID:D7XQ/3Kh
>>523
ダメでひた(^^
というよりHP減らしても一番上のifしか呼び出されまふぇん(^^
2017/08/05(土) 17:53:12.98ID:fMsX6Qt3
そりゃモンスターのHPは常に100%以下だからずっと上だけになる
2017/08/05(土) 17:56:11.76ID:e9RI6N3W
何がしたいかわからんが、一行目は少なくとも>=100だろうな。
2017/08/05(土) 18:01:13.49ID:D7XQ/3Kh
感謝感謝のボッキング!(^^
ところで今度は51%以上でも50%が呼び出されるようになりまひた(^^
なぜでふか?(^^
2017/08/05(土) 18:19:33.47ID:2wEFeqyo
アセットをかうほうが早そうですね
2017/08/05(土) 18:26:33.25ID:fMsX6Qt3
floatで計算してねーからじゃね?
2017/08/05(土) 18:30:13.97ID:e9RI6N3W
>>527
→525
2017/08/05(土) 18:30:42.48ID:TcKvTVDT
ボッキングくん elseifのところ
50と100を入れ替えなさい
2017/08/05(土) 18:33:59.97ID:D7XQ/3Kh
入れ替えまひた(^^
2017/08/05(土) 18:44:56.51ID:D7XQ/3Kh
いろいろいじってみまひたがやっぱり駄目でひた(^^
しゃーないのでHP表示要素は排除することにしまふ(^^
HP表示がないからいつ死ぬかわからないMMOというのも面白いでひょう(^^
というのは冗談で別の方法を試してみまふ(^^
2017/08/05(土) 18:50:17.85ID:e9RI6N3W
120、100、85、51、50、49、1、0の時、それぞれどう言う表示にしたいの?
それ次第だな。
2017/08/05(土) 18:53:51.12ID:D7XQ/3Kh
HPの画像を差し替えたいんでふよ(^^
それでHPバーを減少させてるように見せまふ(^^
2017/08/05(土) 18:56:30.83ID:Iv6I4n4s
なんてこった...

ボッキングコンチクショウめが
HP表示はあとで教えてやるから
取り敢えずモンスターのlookatikと
攻撃モーションでも直しておけ...

でもまあ考えようとしただけ良い、
前進している
2017/08/05(土) 18:59:39.39ID:D7XQ/3Kh
Lookatは修正しまひた(^^
最初モンスターが常時こっちを向く不具合が発生したものの(^^
無事作ることが出来まひた(^^
2017/08/05(土) 19:06:51.24ID:Iv6I4n4s
そうか
じゃあ、今の問題、
HP表示とは関係ないが、
最後までがんがえて
3種類の条件正しく処理させてみやがれ

俺は今出先だが、
20時ぐらいにはHP表示説明書いとくから
2017/08/05(土) 19:09:28.79ID:Iv6I4n4s
処理って、ログ出すだけでいいからな、

満タンの時と、50%以下の時、
死ぬ時はまあ死ぬからいいや
2017/08/05(土) 20:01:36.74ID:e9RI6N3W
>>522
上で書いてくれてるだろ。

if (モンスターのHP / モンスターの最大HP * 100 <= 0)
{
Debug.Log("モンスターがHP0%でふ(^^");
Monster死亡処理();
}
else if(モンスターのHP / モンスターの最大HP * 50 <= 50)
{
Debug.Log("モンスターがHP50%以下でふ(^^");
}
else
{
モンスターのHPいっぱい
}
2017/08/05(土) 20:22:11.69ID:Iv6I4n4s
おいこらボッキング

うまいことログだせたか?
2017/08/05(土) 20:29:20.72ID:D7XQ/3Kh
混乱に混乱を重ねてもう何が何だか分からなくなりまひた(^^
>>540でいいんでふかね?(^^
2017/08/05(土) 20:34:10.80ID:Iv6I4n4s
いいや全然だめ
2017/08/05(土) 20:38:29.84ID:D7XQ/3Kh
チンコもげそうでふ(^^
2017/08/05(土) 20:40:23.85ID:Iv6I4n4s
うーん

まずそれ片付けるか
2017/08/05(土) 20:43:49.00ID:Iv6I4n4s
からのゲームオブジェクトにこれぶっこんで動かしてみれ

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class IntRoundDown : MonoBehaviour {
int モンスターのHP = 4;
int モンスターの最大HP = 10;
// Use this for initialization
void Start () {
if (モンスターのHP / モンスターの最大HP * 100 <= 0)
{
Debug.Log("モンスターがHP0%でふ(^^");
}
else if(モンスターのHP / モンスターの最大HP * 50 <= 50)
{
Debug.Log("モンスターがHP50%以下でふ(^^");
}
else
{
Debug.Log ("モンスターのHPいっぱい");
}
}

// Update is called once per frame
void Update () {

}
}
2017/08/05(土) 20:45:56.44ID:Iv6I4n4s
期待どおりのログでるかね?
2017/08/05(土) 20:53:05.21ID:D7XQ/3Kh
ダメでひた(^^
549名前は開発中のものです。
垢版 |
2017/08/05(土) 20:55:26.08ID:Iv6I4n4s
じゃこれは?
1f * は(float) にかえても同等、キャストはわかるだろ?

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class IntRoundDown : MonoBehaviour {
int モンスターのHP = 3;
int モンスターの最大HP = 10;
// Use this for initialization
void Start () {

if (1f * モンスターのHP / モンスターの最大HP <= 0)
{
Debug.Log("モンスターがHP0%でふ(^^");
}
else if(1f * モンスターのHP / モンスターの最大HP <= 50)
{
Debug.Log("モンスターがHP50%以下でふ(^^");
}
else
{
Debug.Log ("モンスターのHPいっぱい");
}
}

// Update is called once per frame
void Update () {

}
}
2017/08/05(土) 20:57:26.70ID:Iv6I4n4s
あああああああああああああああああああ

まーたーーーーーーやってしまったああああああああああ

しにたああああああああい
2017/08/05(土) 20:58:52.08ID:D7XQ/3Kh
無事50%以下が表示されまひた(^^
2017/08/05(土) 21:01:30.08ID:Iv6I4n4s
int 同士の割り算した時点で小数点以下切り捨てられるから
そのあとあわてて100かけたって手遅れ

ましてや50かける意味は俺にはさっぱりわからんかった

ドヤ顔で教えてたやつの顔をつじのこの背中でひっぱたいてやれ

あとうっかりあげちゃうやつの顔もひっぱたいてよし・・・・
2017/08/05(土) 21:03:36.33ID:Iv6I4n4s
有効なのは

100 * &#12316;と先にかけて計算するか
1f * とfloat型の計算にもちこんでやるか
(float) キャスト

おそらく最も高速なのは1f *

で、この話はもうよし
本題・・・
2017/08/05(土) 21:05:37.19ID:D7XQ/3Kh
なんと!あとから掛けるのが駄目だったんでふか(^^
2017/08/05(土) 21:05:39.73ID:Iv6I4n4s
長くて貼れない

2017/08/05(土) 21:07:27.68ID:D7XQ/3Kh
画像にすれば貼れまふよ(^^
557名前は開発中のものです。
垢版 |
2017/08/05(土) 21:09:05.71ID:Iv6I4n4s
うつのめんどいだろ
わけて貼るから上手にくっつけれ

Hpバーの説明な
これ、俺がおとといだか酔っ払ってしゃべりながら加工したやつ

モンスター向けにやり方書くから、
プレイヤーの方は自分でやってみれ

1.UIのHPのバーpivotのxを1か0にする

2.以下のスクリプトをバーにぶっこむ
2017/08/05(土) 21:11:05.29ID:Iv6I4n4s
using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class HPBar : MonoBehaviour
{
float maxXSize;
RectTransform rectTransform;

void Awake () {
rectTransform
= gameObject.GetComponent<RectTransform> ();
maxXSize = rectTransform.sizeDelta.x;
}

void UpdateValue(float t){
float x = Mathf.Lerp (0f, maxXSize, t);
rectTransform.sizeDelta
= new Vector2 (x, rectTransform.sizeDelta.y);
}

public void setHPRate(int maxHp, int currentHP){
UpdateValue (1f * currentHP / maxHp );
}
}

3.モンスターHPスクリプトから必要なときに
表示更新をお願いする
2017/08/05(土) 21:11:38.40ID:D7XQ/3Kh
あれ?(^^
NGワードに何か引っかかってまふ?(^^
2017/08/05(土) 21:12:06.78ID:D7XQ/3Kh
あっ、大丈夫でひた(^^
2017/08/05(土) 21:14:34.28ID:Iv6I4n4s
NGってのもあんだっけ
ニコニコ動画みたいだな

ちょっと現状のボッキングプロジェクト環境に簡単にあわせられるかわからん
まぁやってみれ
2017/08/05(土) 21:22:07.44ID:D7XQ/3Kh
エラー吐きまひた(^^
MissingComponentException: There is no 'RectTransform' attached to the "GameObject" game object, but a script is trying to access it.
You probably need to add a RectTransform to the game object "GameObject". Or your script needs to check if the component is attached before using it.
UnityEngine.RectTransform.get_sizeDelta () (at C:/buildslave/unity/build/artifacts/generated/common/runtime/RectTransformBindings.gen.cs:173)
HPBar.Awake () (at Assets/スクリプト/MMOスクリプト/HPBar.cs:14)
2017/08/05(土) 21:26:44.06ID:Iv6I4n4s
上の階層のGameObjectにスクリプトつけてないか?
2017/08/05(土) 21:29:11.12ID:D7XQ/3Kh
間違えて別のオブジェクトにもつけてまひた(^^
2017/08/05(土) 21:32:00.45ID:D7XQ/3Kh
アレを付けたら今度は別スクリプトでエラーが(^^
NullReferenceException: Object reference not set to an instance of an object
MonsterHP.Start () (at Assets/スクリプト/MMOスクリプト/MonsterHP.cs:45)
2017/08/05(土) 21:33:22.60ID:Iv6I4n4s
モンスターHPの45行目に何書いてあんだ?
2017/08/05(土) 21:35:58.35ID:D7XQ/3Kh
恐らくアレやアレが外れてるのが原因でふね(^^
付け直しまふ(^^
2017/08/05(土) 21:37:18.85ID:Iv6I4n4s
あれやあれか
なんでまた外れてんだ
いたずらしすぎだな
2017/08/05(土) 21:45:53.26ID:D7XQ/3Kh
void Start()が機能しなくなりまひた(^^
2017/08/05(土) 21:47:11.93ID:Iv6I4n4s
なにのぼいどすたーとだよ?(^^
2017/08/05(土) 21:48:57.32ID:D7XQ/3Kh
機能はしてることを確認しまひた(^^
HPBarうんち = GameObject.Find("HP").GetComponent<RawImage>();
ここがエラー吐いてまふ(^^
2017/08/05(土) 21:51:04.07ID:D7XQ/3Kh
原因分かりまひた(^^
2017/08/05(土) 21:52:32.08ID:D7XQ/3Kh
こことここが逆でひた(^^
http://i.imgur.com/xyprZz9.png
2017/08/05(土) 21:54:04.65ID:D7XQ/3Kh
で本題のあのスクリプト、機能しまふぇんでひた(^^
2017/08/05(土) 21:55:25.33ID:Iv6I4n4s
うん・・・?
"HP"ってなんだ?
名前が適当すぎてわからん!!!

それはなんのスクリプトですか?モンスターHP?
あと、ヒエラルキーのその周辺のキャプあげといて
一回家かえるので10分後くらい
2017/08/05(土) 21:56:39.54ID:Iv6I4n4s
ああ、OK

動かないつて、呼んでないとかじゃねーだろうな
モンスターHPからバーさん更新してねつてお願いすんだぞ
2017/08/05(土) 21:59:14.18ID:D7XQ/3Kh
http://i.imgur.com/e4cXbBH.png
2017/08/05(土) 21:59:59.72ID:D7XQ/3Kh
>>576
そうなんでふか(^^
忘れてまひた(^^
2017/08/05(土) 22:01:31.06ID:D7XQ/3Kh
ところで何の関数を呼び出せばいいんでふか?(^^
2017/08/05(土) 22:09:53.57ID:wBtO4FEQ
それをバーのスクリプト読んで考えるんじゃい
甘ったれめ
2017/08/05(土) 22:22:21.61ID:D7XQ/3Kh
なんじゃこりゃ(^^
NullReferenceException: Object reference not set to an instance of an object
MonsterHP.damaged (Int32 damage) (at Assets/スクリプト/MMOスクリプト/MonsterHP.cs:63)
Playerbokking.attack () (at Assets/スクリプト/MMOスクリプト/Playerbokking.cs:169)
2017/08/05(土) 22:23:31.30ID:D7XQ/3Kh
一体何がいけないんでふか(^^
GetComponent<HPBarSc>().setHPRate(モンスターの最大HP, モンスターのHP);
2017/08/05(土) 22:27:30.66ID:wBtO4FEQ
ちょっとまて

GetComponent<HPBarSc>().setHPRate(モンスターの最大HP, モンスターのHP);

この行、前半省略か?それともいきなりこうかいてる?
2017/08/05(土) 22:28:13.10ID:D7XQ/3Kh
public void damaged(int damage)
{
if (damage < モンスターの防御力)
{
モンスターのHP = モンスターのHP - 0;
}
else
{
モンスターのHP = モンスターのHP - (damage-モンスターの防御力);
target.GetComponent<HPBarSc>().setHPRate(モンスターの最大HP, モンスターのHP);
}

if(モンスターのHP <= 0)
{
Monster死亡処理();
}

}
2017/08/05(土) 22:29:35.15ID:wBtO4FEQ
targetには何はいってんだ?
2017/08/05(土) 22:30:47.15ID:D7XQ/3Kh
多分Ethanさんが入ってまふ(^^
2017/08/05(土) 22:33:48.73ID:wBtO4FEQ
それじゃ

Ethanさん、HPBarのスクリプト知ってるでしょ?更新おねがいね?

って書いてることになるが、それであってっか?

ほんとにEthanはHPBarScなるコンポーネントもってっか?
2017/08/05(土) 22:37:49.75ID:D7XQ/3Kh
HPゲージは減るようになりまひた(^^
しかし思わぬバグが発生したのでしばし待たれよ(^^
2017/08/05(土) 22:39:45.67ID:D7XQ/3Kh
治りまひた(^^
次に進みまひょう(^^
ちなみにバグの内容はゲージの下の黒いバーが表示されないという内容でひた(^^
2017/08/05(土) 22:42:50.32ID:wBtO4FEQ
なんだそりゃしらんぞ

HPの下にでもつけときゃいいだろ
2017/08/05(土) 22:46:10.09ID:D7XQ/3Kh
もう一つバグが発生しまひた(^^
モンスターを倒してリスポーンしたらクリックするまでHPの表示が0になってまふね(^^
2017/08/05(土) 22:50:51.13ID:D7XQ/3Kh
治せまひた(^^
2017/08/05(土) 22:51:15.87ID:wBtO4FEQ
二番目はわかるぞ
けちんぼだから教えねーよ?

一番目はなんだ?バーの後ろに用意したいってことか?
2017/08/05(土) 22:51:31.67ID:D7XQ/3Kh
マウスが重なったときとダメージ関数内で呼び出せばよかったんでふね(^^
2017/08/05(土) 22:51:38.94ID:wBtO4FEQ
そりゃなにより
2017/08/05(土) 22:52:39.59ID:D7XQ/3Kh
1番目は治りまひた(^^
バーの裏に黒いバーを表示したかったのでふが(^^
ただのコピペ改変ミスでひた(^^
2017/08/05(土) 22:53:28.99ID:wBtO4FEQ
イメージ通りに動いてるか
Ethanのは自分でやんだぞ
基本はつかいまわせるが、応用編だ
2017/08/05(土) 22:54:34.84ID:D7XQ/3Kh
明日丸一日使って作ってみまふ(^^
2017/08/05(土) 22:56:26.37ID:wBtO4FEQ
ところで、黒いバーってずっと表示されちゃってねぇ?
2017/08/05(土) 23:01:15.63ID:D7XQ/3Kh
HPバーと同じタイミングで消えてまふよ(^^
2017/08/05(土) 23:02:29.90ID:wBtO4FEQ
あー親を消してるわけか
なるほど
2017/08/05(土) 23:10:26.82ID:D7XQ/3Kh
あと放置してて忘れてたけど(^^
乱数が1しか生成されないけどどうする!?(^^
2017/08/05(土) 23:10:58.10ID:wBtO4FEQ
乱数のコード貼って見れや
2017/08/05(土) 23:14:01.76ID:D7XQ/3Kh
あれ?生成された?(^^
どうやら0だけ生成されないみたいでふ(^^
モンスター発生乱数 = Random.Range(0, 10);
2017/08/05(土) 23:14:52.25ID:wBtO4FEQ
10だけ生成されないの間違いでないか?
2017/08/05(土) 23:18:25.04ID:wBtO4FEQ
まぁいいや
これ読みやがれ

https://docs.unity3d.com/ja/540/ScriptReference/Random.Range.html

最新のリファレンスじゃないけど多分かわってないだろ
2017/08/05(土) 23:19:22.58ID:D7XQ/3Kh
これの修正前コードは0,1だったので多分そうでふ(^^
もしかして最大の数は生成されないのでふか?(^^
2017/08/05(土) 23:21:20.49ID:wBtO4FEQ
説明にもろに書いてあるから
読みやがればわかるでござんしょ
2017/08/05(土) 23:23:20.33ID:wBtO4FEQ
float版とint版で挙動が違うでござんす

ほかの課題はあるんけ?
2017/08/05(土) 23:28:05.16ID:D7XQ/3Kh
ないでふ(^^
無事Mutantモンスターを実装出来まひた(^^
感謝感謝のボッキング!(^^
2017/08/05(土) 23:28:53.10ID:wBtO4FEQ
そんじゃ
ここいらで
ゲームとプロジェクト両方アップしやがっておいたらよろしぞ
2017/08/05(土) 23:29:46.03ID:wBtO4FEQ
何万人いるかわからんが
ボッキングファンが楽しみにしてるだろうから、な!!!!!
2017/08/05(土) 23:35:49.97ID:wBtO4FEQ
あとお勉強課題だしとくからときなさーい
解くまで俺は質問に答えないので他のやつに聞きやがれ

【課題】
AwakeとStartとUpdateの違いを簡潔に説明しなさい
上記をふまえてなぜHPBarSCではAwakeが使われているか答えなっさーい

※ぐぐってよし
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。