mieki256's diary



2025/01/17(金) [n年前の日記]

#1 [godot] ピンの位置を2Dで表示したい。その2

_昨日の作業 の続き。Windows10 x64 22H2 + Godot Engine 4.3 64bit でゴルフゲームっぽいものが作れないものかなと試してる。

ベクトルの外積を使って、ピンが右にあるか左にあるかを判別することはできた。以下のような感じになった。上のほうに旗アイコンがあるけれど、球の位置に連動して動いてる。




ノード構成は以下。

nodelist_ss01.png


ソースは以下。

_main.gd
extends Node3D

@export var target: MeshInstance3D
@export var markdown: TextureRect
@export var markleft: TextureRect
@export var markright: TextureRect
@export var message: Label


func _ready():
    pass


func _process(delta):
    var cam = get_viewport().get_camera_3d()
    if cam == null:
        printerr("Not found Camera3D")
        return

    var cam_ang = Input.get_axis("ui_left", "ui_right") * (120.0 * delta)
    cam.rotate_y(deg_to_rad(cam_ang))
    
    var is_behind = cam.is_position_behind(target.global_position)
    var in_frustum = cam.is_position_in_frustum(target.global_position)
    
    var msg = ""
    msg += "behind: %s" % ("true" if is_behind else "false")
    msg += "\nin frustum: %s" % ("true" if in_frustum else "false")
    message.text = msg

    var viewport_size = get_viewport().get_visible_rect().size
    var screen_pos = cam.unproject_position(target.global_position)

    var tw = markdown.texture.get_width() / 2
    if not is_behind and (screen_pos.x > tw and screen_pos.x < (viewport_size.x - tw)):
        markleft.hide()
        markright.hide()
        markdown.show()
        markdown.global_position.x = screen_pos.x - tw
        #markicon.global_position.y = screen_pos.y - (markicon.texture.get_height())
    else:
        var camvec: Vector3 = -cam.global_transform.basis.z
        var tgtvec: Vector3 = (target.global_position - cam.global_position)
        var d = Vector2(camvec.x, camvec.z).cross(Vector2(tgtvec.x, tgtvec.z))
        if d > 0:
            markleft.hide()
            markright.show()
        elif d < 0:
            markleft.show()
            markright.hide()
        else:
            markleft.hide()
            markright.hide()
            
        markdown.hide()


上記のソース内では、x-z平面でだけ考えて、外積を使って任意の座標がカメラから見て右にあるか左にあるかを調べてる。外積は、2つのベクトルに対して垂直なベクトルを求めることができるので…。x-z平面上でその垂直ベクトルが上を向いているか下を向いているか、つまりは符号を見るだけで、右にあるか左にあるかを判別できる。

about_cross_ss01.png

#2 [anime] 「劇場版 乙女ゲームの破滅フラグしかない悪役令嬢に転生してしまった…」を視聴

2025/01/06にBS朝日で放送されていたものを録画していたので視聴。いわゆる悪役令嬢転生モノの劇場版。初見。視聴したことをメモしておかないと忘れそうなのでメモ。

一般的にこの手の作品は特定のゲーム世界内に転生してしまう設定がほとんどだけど、 別タイトルのゲーム設定も混入してくる展開にちょっと感心。それ、アリなんだ…。 そのゲームの制作会社も開発スタッフも同じだし、共通の世界観でゲーム化されているから、という辻褄合わせにも感心。それっぽい。

集団幻覚で成り立っているジャンルに対する不安 :

個人的には、この手のジャンルの基本設定自体がどうにも引っ掛かる…。

えてしてその手の作品内では「乙女ゲーに必ず出てくる悪役令嬢キャラ」という紹介がされるけれど、現存している乙女ゲー作品群にそんな属性のキャラはまず存在しない、とも聞くわけで…。

一体どういうことなんだ。皆で集団幻覚でも見てるのか? 集団幻覚だけでこんなに大量の作品群を作ってしまっていいのか?

いやまあ、これが小説、漫画、アニメ、ドラマなら、たしかにそういうキャラは時々出現するのだけど。ゲームはまた別の話だろうと…。コレって乙女ゲーというジャンルにとって風評被害じゃないの…?

まあ、戦隊シリーズの黄色はカレー好き、みたいなものなのかもしれんけど…。カレー好きな黄色なんてほとんど居ないのに、何故か黄色はカレー好きというイメージが定着しちゃってる…。あるいは、コミケ会場を指差して「ここに10万人の宮崎勤がいます!」とレポートされちゃったソレみたいな。そんな報道はされたことがないのに、結構な数の人が「俺は確かにその映像を見た!」と言い出したりして…。

きっとそのうち、「乙女ゲーだから悪役令嬢キャラを出さないとダメでしょう」と何も知らずに本気で言い出す開発スタッフが出てきて、テンプレとして必ずそういうキャラが入れられるようになってしまって、「乙女ゲーと言えばこういうキャラが出てくるもの」というイメージがますます強化されて、「元々乙女ゲーにはそんな属性のキャラなんてどこにも存在してなかった」という事実が消滅してしまうのだろうなと…。ソレっていいのかなあ…。

そういうことが許されてしまうなら、「ガンダムシリーズには必ずデブキャラが出現する」とか、「ガンダムシリーズには必ずマスクをつけたキャラが出現する」とか、実際にはそうではないことを吹聴されちゃっても文句を言えなくなりそうだけど…。いいのかなあ…。

以上、1 日分です。

過去ログ表示

Prev - 2025/01 - Next
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project