習作完成:グッドエンド、ゴール仕上げ/エスBOT反応パターン追加候補調査:Mecabを使ってみる【187日目】(2019/02/04)
https://gyazo.com/ab2f706af0575533b198748d29b17882
Porin.icon今日はカラメルカラムの業務の作業記録だよん!
◆作業記録の目次
1. 振り返りと考え事たいむ
2. 習作完成:グッドエンド、ゴール仕上げ
3. エスBOTの追加反応パターン候補調査:Mecabを使ってみる
◆作業時間のタイムトラッキング結果
https://gyazo.com/7170a04f7a57a5e4812177f4464c4957
https://gyazo.com/30923c812baed146092eabe7781fcde4
https://gyazo.com/ea38e8d40023a4d62a667463b859b1d4
1. 振り返りと考え事たいむ
◆前日の振り返り
▼ 前回の業務の作業記録
▼ 振り返り内容
こういう風に動かしたいなと思ったことをだいぶUnityで実現できるようになってきた
ものすごく滑らかなうごき、とかはまだちょっと怪しかったり、実行速度とかよくわからないので何も考えずにやってるところはあるけど
そういうのも必要になったら覚えてくのだろう...
デバッグ用のスクリプトとかも作った方がよかったかもな 〜
めんどくさがってやってなかったけど、何度もゲーム実行して動き確かめたりすると結局時間がかかってしまった感じがする
実装に集中するとなかなかデザインとか他の人のタスク進捗とかが意識から抜けてしまう
そもそも実装にまだ慣れてなくていっぱいいっぱいになっちゃうみたいなのもある
タスク管理してるボードにも、実装タスクしか書いてないので、そこにばっかり意識が向いちゃうのかもな
Asanaとかで一緒に管理するようになればだいぶ変わるはず
◆本日やりたいこと
習作仕上げ
/icons/done.iconグッドエンド
/icons/done.iconゴール差し替え
/icons/done.iconEGOプロジェクト見せてもらう
/icons/done.icon(途中まで)エスBOTアップデート
https://gyazo.com/ea38e8d40023a4d62a667463b859b1d4
2. 習作完成:グッドエンド、ゴール仕上げ
◆ グッドエンド作成
▼ 実装方法
パンダ
1~4の繰り返し
1. タイトル赤+パンダ下
2. タイトル白+パンダ上
3. タイトル赤+パンダ下+吹き出し下
4. タイトル白+パンダ上+吹き出し上
シーン遷移
5秒たったらTap to Restartを表示してスタート画面に戻れるように
▼ スクリプト
シーン遷移
interval秒後にテキストを表示
code:EndDirector.cs
IEnumerator ShowGoodEnd()
{
goodEnd.SetActive(true);
yield return new WaitForSeconds(intarval);
bgmDirector.PlayGoodendMusic();
goodEnd.transform.GetChild(0).gameObject.SetActive(false);
goodEnd.transform.GetChild(1).gameObject.SetActive(true);
StartCoroutine(GoodEndMotion());
yield return new WaitForSeconds(intarval);
// リスタート説明を表示
restart.SetActive(true);
}
アップデート内で監視
code:EndDirector.cs
private void Update()
{
// リスタート説明が表示されたら、画面タップでスタートシーンに戻れる
if (restart.SetActive(true);.activeSelf)
{
if (Input.GetMouseButtonDown(0))
{
GoToStartScene();
}
}
}
パンダ
1~4を順番に繰り返す
code:EndDirector.cs
IEnumerator GoodEndMotion()
{
Image titleImage = goodEndTitle.GetComponent<Image>();
while (true)
{
yield return new WaitForSeconds(goodendInterval);
titleImage.sprite = goodend_title_white;
pandaBaby.transform.Translate(0f, 10f, 0f);
yield return new WaitForSeconds(goodendInterval);
titleImage.sprite = goodend_title_red;
pandaBaby.transform.Translate(0f, -10f, 0f);
kawaiiBottom.SetActive(true);
yield return new WaitForSeconds(goodendInterval);
titleImage.sprite = goodend_title_white;
pandaBaby.transform.Translate(0f, 10f, 0f);
kawaiiBottom.SetActive(false);
kawaiiTop.SetActive(true);
yield return new WaitForSeconds(goodendInterval);
titleImage.sprite = goodend_title_red;
kawaiiTop.SetActive(false);
pandaBaby.transform.Translate(0f, -10f, 0f);
}
}
デザイナさんに書いてもらったイラストがただただ可愛い
https://gyazo.com/a42c01183935e978fb80c8d4765b8ecd
◆ ゴール仕上げ
デザイン素材をもらったのでそれに合わせてパーティクルを調整
Start LifetimeとStartSpeedを増やし、Color over Lifetimeを削除
https://gyazo.com/3bdaa04186f47264f161b09f6d3abe77
パンダの赤ちゃんが可愛い...
https://gyazo.com/b468a27755669f799b7052d3b9779d6b
Porin.icon他にもいろいろ微調整して一応の完成となりました〜(ぱちぱち)
https://gyazo.com/ea38e8d40023a4d62a667463b859b1d4
3. エスBOTの追加反応パターン候補調査:Mecabを使ってみる
▼ データの読み込み
以前作ったシート処理用のクラスを使い回す
code:sheet.py
import json
import os
import gspread
from oauth2client.service_account import ServiceAccountCredentials
class SpreadSheet():
'''スプレッドシートの読み書きについての処理が入ったクラス'''
def __init__(self, sheet_id, sheet_name):
self.scope = [
]
self.sheet_id = sheet_id
self.sheet_name = sheet_name
def read_auth(self):
hostname = gethostname()
# 認証情報のJSONファイルのパスを取得する
path = os.path.dirname(os.path.abspath(__file__))
json_path = os.path.join(path, '')
# JSONファイルの内容を辞書型にして取得
with open(json_path) as f:
auth_dict = json.load(f)
return auth_dict
def auth_sheet_api(self):
'''スプレッドシートAPIの認証を行う'''
auth_dict = self.read_auth()
credentials = ServiceAccountCredentials.from_json_keyfile_dict(
auth_dict,
self.scope
)
gs_cred = gspread.authorize(credentials)
return gs_cred
def open_worksheet(self):
'''指定したワークシートを開いて操作できるオブジェクトを返す'''
gs_cred = self.auth_sheet_api()
spreadsheet = gs_cred.open_by_key(self.sheet_id)
worksheet = spreadsheet.worksheet(self.sheet_name)
return worksheet
テキストファイルに落とす
''がついてるものは過去に読み込んだものなのでスキップする
可読性とか今後の処理をやりやすくするために改行を入れる
code:load_value.py
from spreadsheet import Sheet
if __name__ == '__main__':
sheet = Sheet(sheet_id, sheet_name)
worksheet = sheet.open_worksheet()
value_list = worksheet.col_values(1)
with open('chat.txt', 'w') as f:
for value in value_list:
if "'" not in value:
f.write(value)
f.write('\n')
▼ 解析
上記と同様に反応キーワードの一覧もテキストファイルに落とす
単語とかの識別に形態素解析ライブラリのMecabを使ってみた
文章を一行ずつ読み込んで形態素に分ける→それぞれカウントして多かった順に並べてテキストファイルに出力するスクリプト
code:count_word.py
import MeCab
import re
from collections import Counter
if __name__ == '__main__':
mecab = MeCab.Tagger('-Ochasen')
parsed_list = []
with open('chat_2.txt') as f:
for text in f:
parsed = mecab.parse(text)
parsed_list.append(parsed.split('\t'))
counter = Counter()
for parsed in parsed_list:
pat = r'(名詞|動詞|形容詞)'
try:
if re.search(pat, parsed3): except:
print('exception')
counter = counter.most_common() # タプルのリストになる
with open('ranking.txt', 'w') as wf:
for count in counter:
count = list(count)
wf.write('{}, {}'.format(count0, count1)) wf.write('\n')
(了)
https://gyazo.com/ea38e8d40023a4d62a667463b859b1d4
感想や指摘などあったらどしどし連絡ください!!
もし万が一、気が向いたりして何かコメントをもらえたら超絶喜びます!!Porin.icon