月: 2021年2月

『テイルズオブグレイセス』をやった(7)

基地近くで星イベント。
壊れたブローチ…

( ´・ω・)エ?
襲撃されたこの子は助かったの?
死んでないよね…?


ブロックを動かして先へ先へ。
強運の魔導書を(σ・∀・)σゲッツ!!

ここ画面の暗さで何処行っていいかわからなくなるな(´・ω・`)
赤いパネルのとこに出るのがわからんかったわ。

アンマルチアの鍵を(σ・∀・)σゲッツ!!

ようやく辿り着いたら、ヒューマノイド達とバトル。
余所見してたら勝ってたw

強化パーツはデリス鋼?
お約束のデリスかw

デリスピットを作ったとかどうとか。
ついでに余ったデリス鋼で作った指輪で他の三人と同じ様にソフィと共鳴出来るとかどうとか。
ご都合主義的だな(・∀・)


えっちらおっちら終焉都市に戻る。
マリクとのバトル。

ようやっと元の世界に帰れる…(ヽ'ω`)
なんかようわからんけど、エメロードも一緒に来るってさ。

シャトル発射場の宝箱のパス、エフィニアと勘違いしてたわw
エフィネアか(ノ∀`)
熱血の魔導書を(σ・∀・)σゲッツ!!

またアニメ。
繭に直接突っ込むんか…

ラムダ繭着。


先に進んだら、ラムダの進化に驚嘆し考え込むエメロード。
なんか良からぬことを考えてるの(´・ω・`)?

鍛冶の魔導書(σ・∀・)σゲッツ!!

あれー?
また何処に行っていいかわからなくなる(´・ω・`)

マリクとヒューバートはエメロードの変心に気づいてるのか。

ああ、一回浮島を上というか奥の画面にやったら、そっちの方で別の浮島を下の画面に飛ばすのね。

奥まで行ったら広いところに。
モンスター出てこないんだな。
リチャードはコスプレ状態。

ラスボス、ラムダじゃなくてエメロードとかだったら笑うんだけど、そこまでひどくないかw

余所見してたら、アスベルとヒューバートがやられてて一瞬焦ったが、その後は適宜回復介入をしていたら勝てた(・∀・)
レベル57くらい。


リチャードから出て来たラムダを対消滅させようとしたソフィ。
エメロードが止めたけど、その目的は…?

www
エメロードがラムダを吸い込んだww
なにこの遅れて来たぽっと出のラスボスwwww ←ラスボスではなかった(ノ∀`)

55時間以上もかけてここまでゲームを進めて来た俺氏とアスベル達が端役だとヽ(`Д´)ノ

第一形態はアスベル、ソフィ、シェリア、マリクで、ソフィとシェリアをこまめに回復にさせていたら、特に何も問題なく。

お、無傷だと(・∀・)
エメロード、雑っ魚www

結局ラスボスはラムダなのか…
エメロード、爆散w

リチャードと再合体…
アニメ始まった。
リチャードはラムダと心中する気?

と思いきや、また戦うんか?
シャトルが迎えに来て脱出。


アスベル達がソフィが揉め揉め。
でもほら、ソフィはヒューマノイドだからそういう思考ルーチンでもしょうがないじゃない(´・ω・`)

ラントに帰ろうと言われるも未踏の砂漠へ。
なんかよくわからんがモンスターとバトルに。
ヒューバートとパスカルの恋愛フラグ?

あーここでフォドラで入手したアンマルチアの鍵が使えるのかw
ここがラストダンジョンなのか?
まあまあ敵が強いな。
ただのエクストラダンジョン?

砂に埋れた遺跡が正式名称か。

この色付き電力は結構やり応えのあるパズルだな。
孤独の魔導書を(σ・∀・)σゲッツ!!

3色のところは失敗するとリセットかかるから面倒くさい(ヽ'ω`)
奥に居たボスモンスターは弱いなw
雑魚モンスターの方が強いだろw

英雄の杖…?


バロニアの道具屋で星イベント。
ああ、フレデリックのハンケチ置き忘れか。

大輝石の前に時空の歪み?
ってバトルかよヽ(`Д´)ノ
結構強かったな。
つーか硬かった。

もしかしてこれもクリアの為に必要な戦闘だったのかな?
じゃああと2つ回らんと駄目か(´・ω・`)メドイ

適当に依頼とかをクリアする。
オーレンの森にピアスが居ったww


モイラ…?
家出した貴族の娘とソフィが間違えられた?
ああ、本当は死んじゃってるのか…(´・ω・`)

闘技場のノーマルクラスでアスベルがクリア…
レベル62くらいだったけど、20階の続きから始めて、最後はアイテム使ったわ。
ってまだ戦うんか?

あれ?
前にやったシリーズ作品のキャラ?
ヴェイグって氷のスタンドの…
ああ、黒衣の番人ってなんか居たな、そういやw

パーティーバトルで良かった。
あれ、アイテムはそのままか…
やばいかも…

ヒューバートがやられたけど、なんとか勝った。
セルシウスキャリバー、強力だわ。
なんか剣を探して来てくれとかどうとか。

英雄の杖、ここの宿の依頼なのかw
リアラって誰だっけ…思い出せない……("・ω・゙)

闘技場の宝箱のパスってライオットピークなのかw
代謝の魔導書を(σ・∀・)σゲッツ!!


ストラタの西の遺跡の前に星イベント。
モイラの骨か…(´・ω・`)

あれ?
ここはバトルが発生しない…

街に戻ってモイラの形見を渡す。

ロックガガンに挑んでみる。
とても勝てそうにない(ノ∀`)
毛が盗めたので逃げる。
このゲームのバトルで初めてのマニュアル操作を行った(・∀・)


取り敢えず本編の続きをやりにラントの自邸へ。
ハンケチの忘れ物はフレデリックの謀であったかw

なげぇな、ここのイベント(´・ω・`)
なんかようわからんけど花畑に行くことに。
原素注入(`・ω・´)

お、最終決戦前夜の解散か(・∀・)?
ソフィ、死亡フラグか…?
ヒューバートも若干死亡フラグっぽい感じではあるw
マリクは特に何もなし。

あれ?
シェリアが家に居ない?

門のところに来たらイベント。
バリーとレイモンがシェリアにプロポーズww

アスベルがあだち充漫画の主人公なら身を引きそう(´・ω・`)カワイソウナアダチミツル

つーかパスカルのことを忘れてたわw
何処だろうw

あれ?
道端にパスカルとポアゾンが居ったわ。
フーリエも来た。


まだもうちょっと街を巡る。
デール邸のパス宝箱に金運の魔導書。

あれ?
騎士学校に行ったら、ヴィクトリアが普通に居るんだけどw?
謀反に参加してなかったっけ?

かめにんに売った剣が聖剣?

ブリッジウォールのかくれんぼめどい。
やべぇ、金貸したら全部持ってかれた…30万ガルド以上も…( ;・´ω・`)ゴクリッ

ここはリセットだな(・∀・)

うにのトゲは刺さると痛い(´・ω・`)-36 : DOTween絡み

今までのあらすじ

誰もやっていないので、神経衰弱ゲームはこのまま放置してしまってもいいかなと思わないこともなかったが、常用漢字データの追加だけは実装しておきたかったので、去年から断続的にデータ作成をする。
 ↓
音訓や部首のデータも追加したので、ちょっとプログラムをいじくろうと考えて久しぶりにMole's Match-upのコードを眺める。
 ↓
なんじゃい、この糞コードヽ(Д´)ノ</span>
 ↓
凄く読みにくくて、処理がよくわからない…(ヽ'ω&#096;)
 ↓
致し方なく、リファクタリングしたり、大幅な改修をする。ちょっと前に読んでいたKotlin絡みの知識が役に立った。つーか今まで余りにもスマートな書き方を知らなすぎだっただけとも言う(ノ∀
)

Switch式便利(・∀・)
だけど値を返さなくていいSwitch式みたいなのはないのだろうか。
あとC#ってenumをsealedとか出来ないのか? 出来るのか?
まあswitch式でdefaultないと警告みたいのが表示されるので、キーッヽ(`Д´)ノってなりながら"_=>"を追加するのが嫌ってだけなのだけども。
 ↓
大分進んだけど、1月が終わってしまう…(ヽ'ω`)
 ↓
プレイ結果を表示する部分の改修をしつつ、なんか綺麗なコードじゃないなぁと思っていたところで、たまたま目にしたツイートでDoTweenの紹介をする動画(実は配信)があったので観てみる。

 ↓
DOCounterとかDoTextなんていう便利そうなのがあるやんけ(`・ω・´)
 ↓
そんなことしてる場合じゃないけど書き直してみるか(`・ω・´) ← イマココ


アセット管理

DoTweenを、つまりはアセットを最新にするのは自分で削除して追加しないといけないのかのぅ(ヽ'ω`)メドイ…と思っていたが、実はパッケージマネージャーのマイアセットから更新というかダウンロードと再インポートが出来ることを初めて知った(ノ∀`)
もしかして、これ結構前から出来たのかな?

Asset側に有る古いものをPluginフォルダの下に移してから更新すべきだったらしい…_| ̄|○
Unityを再起動したら二つDoTweenが有るとかどうとかで怒られた。
古い方を削除してPluginフォルダにあった方を再インポートしたが、特に問題はなさそうだ…

マイアセットからのアセット削除(?)はhttps://assetstore.unity.com/account/assetsに行って、対象のアセットを非表示にする感じでいいのかな?


俺氏、すっかりUnityの使い方を忘れる(ノ∀`)

上記の配信のプロジェクトってGithubにあるのかなと思ったが、ぱっと見、なかったようなので自分で環境というかプロジェクトを作ろうとする。

が、しかし…
余りにもUnity Editorでの操作が久しぶりだったために何をどうしたらいいかわからない(ノ∀`)

致し方なく、昔kindleで購入したUnityの寺子屋を見ながら設定等を始める。

[Mobile 2D]や[Mobile 3D]といったテンプレートが増えてる Σ(゚∀゚;)
でもまあダウンロードだけはしておいて、作成は従来通りの[2D]でしてから
Androidへプラットフォームを変更する。Canvas作ってカメラとかの設定を変えて、buttonを配置。

なんかようわからんけど、Textの代わりにTMP(TextMeshPro)が使えるだか使えとかいうようなダイアログが出たので言われるがままにダウンロードして使用する。

紆余曲折の果てに気づく…

DOCounterはPro Onlyやんけ…_| ̄|○


まあDoTween.To()を使って似たような挙動が出来たからいいか…(ヽ'ω`)
UpdateとかでCountupするよりは楽だし。

配置したButtonに追加するスクリプトは以下の通り。
もっと真っ当な書き方があるのだろうけれども、取り敢えず今の所は適当に。

参考:
DOTweenの使い方 Tweenアニメーション入門【Unity】
Unityでスクリプトからボタンのイベントリスナーを取り付ける


<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

<script type='text/javascript'>
    jQuery(function () {let orgColor;$('span.dc').hover(function () {orgColor = $(this).css('color');$(this).css('color','red');var id = '#d_' + $(this).attr('id');$('#disp').html($(id).attr('data-con'))},function () {$(this).css('color',orgColor);});});</script>
disp
using UnityEngine;
using UnityEngine.UI;
using TMPro;
using UnityEngine.EventSystems;
using DG.Tweening;

public class buttonTest : UIBehaviour,IPointerEnterHandler,IPointerExitHandler
{
private Button testButton;
private TextMeshProUGUI buttonText;
private Image buttonImage;
private Color baseTextColor;
private int points = 0;

void Start()
{
testButton = this.gameObject.GetComponentInParent<Button>();
buttonImage = testButton.GetComponentInChildren<Image>();
buttonText = testButton.GetComponentInChildren<TextMeshProUGUI>();


testButton.onClick.AddListener(OnClickButton);
buttonImage.fillAmount = 0;
baseTextColor = buttonText.color;

}

public void OnClickButton()
{
DOTween.To(() => points, (n) => {
points = n;
buttonText.SetText(points.ToString());
}, 1000, 1.0f)

.SetEase(Ease.Linear)
.OnStepComplete(() => {
this.gameObject.transform.DOScale(2f, 0.25f).OnComplete(() => {
this.gameObject.transform.DOScale(1f, 0.25f);
});

points = 0;
});
}

public void OnPointerEnter(PointerEventData eventData)
{
buttonImage.DOFillAmount(1f, 0.25f).SetEase(Ease.OutCubic).Play();
buttonText.DOColor(Color.black, 0.25f).Play();
}


public void OnPointerExit(PointerEventData eventData)
{
buttonImage.DOFillAmount(0f, 0.25f).SetEase(Ease.OutCubic).Play();
buttonText.DOColor(baseTextColor, 0.25f).Play();
}

}


adbによる実機での録画

adb shell screenrecord /sdcard/test.mp4

参考:
AndroidでPCからadbコマンドで動画・静止画キャプチャする

ポインタがないと何やってるかわからんなw


データ埋め込み表示文を作るのに凄まじい時間がかかった…(ヽ'ω`)
本当はkotlinとcompose辺りで上記のようなデータ埋め込み表示文を作る為のエディタのようなものを早く作りたいのだが、取り敢えずMole's Match-upの更新を済まさないと落ち着かないので、こっちを先に頑張るしかないな。

つーかそれよりも早く仕事を見つけないといかんな(´・ω・`)

<div>
    <span id='d_d1' data-con='<a href="https://docs.unity3d.com/ja/2019.3/ScriptReference/EventSystems.UIBehaviour.html" rel="noopener" target="_blank">UIBehaviour</a><br>MonoBehaviourを継承。<br>

初めてその存在を知ったけど、何に使うのかはよくわからない(ノ∀)<br>
<b>"Unity ライフサイクルに則った UI のベースとなる Behaviour クラス"</b>と説明されているので、まあUIに特化してる感じ?'></span>
<span id='d_d2' data-con='<a href="https://docs.unity3d.com/ja/2019.3/ScriptReference/EventSystems.IPointerEnterHandler.html" rel="noopener" target="_blank">IPointerEnterHandler</a><br>
<b>"OnPointerEnter のコールバックを受け取りたいときにインターフェースを実装します。"</b><br>
つまるところ、ひっつけたゲームオブジェクト上にマウスポインタ等が進入したらOnPointerEnter内に定義された処理を実行する為のインターフェイス。'></span>
<span id='d_d3' data-con='<a href="https://docs.unity3d.com/ja/2019.3/ScriptReference/EventSystems.IPointerExitHandler.html" rel="noopener" target="_blank">IPointerExitHandler</a><br>
<b>"OnPointerExit のコールバックを受け取りたいときにインターフェースを実装します。"</b><br>
つまるところ、IPointerEnterHandlerの逆。実装する関数はOnPointerExit()。'></span>
<span id='d_d4' data-con='<a href="https://docs.unity3d.com/Packages/com.unity.textmeshpro@1.1/api/TMPro.TextMeshProUGUI.html" rel="noopener" target="_blank">TextMeshProUGUI</a><br>
なんか色々できるらしいけど、このテスト用コードだったらTextで良かったような気がしないでもない(ノ∀
)'>