Dialogic2ã«ã¯çµã¿èŸŒã¿ã®ã¹ã¿ã€ã«ãããã€ãçšæãããŠããŠãããã«ã¹ã¿ã€ã«ïŒã€ãŸãå¹ãåºãïŒãããã
ããã¯2Dã3Dã®ããŒãã«ãDialogicã®ãã£ã©ã¯ã¿ãŒãèšå®ããŠããããšã«ãã£ãŠããã®ããŒãããå¹ãåºããåºãä»çµã¿ã£ãœãã
ãã ã埮åŠã«äœ¿ãã¥ããã
ãã£ã©ã¯ã¿ãŒãªãœãŒã¹ïŒdchãã¡ã€ã«ïŒããPlayerã«èšå®ããããšã¯ã§ãããããã¯ãŸãæ®éã«ããŒãããŠèšå®ããŠããã ããªã®ã§ã
ã§ãçŸåšã®ã¬ã€ã¢ãŠããèªã¿èŸŒãããšãããšNullãè¿ã£ãŠããã
ããã¯ãŸããDialogicã®ä»çµã¿äžãæ¯åäŒè©±ã衚瀺ããã¬ã€ã€ãŒã®ããŒããæ¶ããããäŒè©±ãå§ãŸããªãéãã¬ã€ã¢ãŠãã¯ååšããªãã£ãŠã®ãæ£ããã
ãªã®ã§ãDialogicã®èšå®ãšããŠLayout Node behaviourã®äžã«On Timeline Endã£ãŠé
ç®ã®ãããã®ã§ããããHide Layout Nodeã«å€æŽã
ããã«ãã£ãŠäžåºŠã¬ã€ã¢ãŠããäœãããã以éã¯è¡šç€ºã»é衚瀺ãåãæ¿ããã ãã«ãªãã¯ãã
ã§ãã³ãŒããšããŠâ¥â¥â¥
GDScriptfunc _setup_dialogic_character() -> void:
if dialogic_character_resource_path == "":
return
var character_resource: Resource = load(dialogic_character_resource_path)
if character_resource and character_resource is DialogicCharacter:
var dialogic_character: DialogicCharacter = character_resource as DialogicCharacter
var layout := Dialogic.Styles.get_layout_node()
if layout == null:
layout = Dialogic.Styles.load_style("default_layout") # ããã«ã¹ã¿ã€ã«
if layout and layout.has_method("register_character"):
layout.register_character(dialogic_character, self)
ãã°ã§ãããéãããŸãCurrent Layoutã¯Nullãè¿ããå
ã»ã©ãšåãã ãã1床ã§ãã»ãªãã衚瀺ããªããšïŒã€ãŸãã¿ã€ã ã©ã€ã³ãå®è¡ãããªããšïŒã¬ã€ã¢ãŠããçæãããªãã
ãªã®ã§ã匷å¶çã«default_layoutãããŒãâ¥â¥â¥ãã
俺ãäœã£ãã¹ã¿ã€ã«ã®ååã¯ãdefault_styleããªã®ã«ãããŒãããããšããŠãã®ã¯ãdefault_layoutãã«ãªã£ãŠããŸã£ãŠãã
ãªãã»ã©ããã©ãŒã«ããã¯ããŠå¥ã®ã¹ã¿ã€ã«ãäœãããçç±ãããã£ãã
èšäºãæžããŠããã£ãã
ã ããæ°ããªåé¡ãâ¥â¥â¥
ã©ããããDialogicã®çµã¿èŸŒã¿ã®Bubbleã®ããŒãïŒå¹ãåºãèªäœïŒã®äœçœ®æ
å ±ãèšç®ããããžãã¯ãçµæ§éå®çã£ãœãã
å®éã®ã³ãŒããæãåºããŠã¿ãã
GDScriptfunc get_speaker_canvas_position() -> Vector2:
if is_instance_valid(node_to_point_at):
if node_to_point_at is Node3D:
base_position = get_viewport().get_camera_3d().unproject_position(
(node_to_point_at as Node3D).global_position)
if node_to_point_at is CanvasItem:
base_position = (node_to_point_at as CanvasItem).get_global_transform_with_canvas().origin
return base_position
base_positionãèªã¿ã«è¡ã£ãŠãã®ã¯get_vieport()ã«ãªã£ãŠãã
ã€ãŸããçŸåšãã®å¹ãåºããååšããViewportã®äžã®3Dã«ã¡ã©ãèŠã«è¡ã£ãŠãã
éã«èšããšãå°çšã§å¥ã®Viewportå
ã§åãããŠãã«ã¡ã©ã®ååŸã«å€±æããã
ããã¯æ¹åã®äœå°ããã§ããªã
ããããã«ã¹ã¿ã ã¹ã¿ã€ã«ã§ã¬ã€ã¢ãŠããäœæãããã®ããŒããã€ã³ã¹ã¿ã³ã¹åããŠããæ ¹ã£ãã®text_bubble_layerãç¶æ¿ããŠããŒããç¶æ¿ãããã®ãäžéšæ¹å€ã»ãªãŒããŒã©ã€ãããŠäœ¿ãæãã«ãªãããã§ããªã
ãããããSaitosæ°ããªããªããããŸããªã
æ¹éãæ±ºãŸã£ãã ãã ãã¶åé²ã§ãããããAheadã§ããããã
ããæ·±å€ã®ãã³ã·ã§ã³ã«ãªã£ãŠãããã§ãææ¥ãããŸãã
ãã£ã©ã¯ã¿ãŒãæå®ããªãç¶æ
ã§ããã°ã座æšãèŠã«è¡ããªãã§ãã©ãŒã«ããã¯ããŠãããŒã·ãŒã³ã衚瀺ãããã®ã§ãããžã·ã§ã³ããæå®ã§ããããã«ãªãŒããŒã©ã€ãããã°ãããã ããã
ãããããŸãææ¥ãããŒããŒã