public void Init(TalkableCharacter _char, NarrativeDialog dialog) { character = _char; type = dialog.type; if (m_text != null) { m_text.DOKill(); m_text.text = dialog.word; // m_text.DOText( dialog.word , dialog.word.Length * 0.06f + 0.3f ); m_text.DOFade(1f, showUpTime); } if (m_backImage != null) { m_backImage.transform.localScale = Vector3.one * 0.01f; m_backImage.transform.DOScale(1f, showUpTime); m_backImage.DOFade(backImageOriginalAlpha, showUpTime); } if (m_arrow != null) { m_arrow.DOFade(backImageOriginalAlpha, showUpTime); } UpdateDialogFramePosition(); }
public DisplayPlot(NarrativePlotScriptableObject _plot, AudioSource _other, TalkableCharacter _char) { index = 0; plot = _plot; otherSpeaker = _other; character = _char; }
void OnDisplayDialog(LogicArg arg) { NarrativePlotScriptableObject tem_Plot = (NarrativePlotScriptableObject)arg.GetMessage(M_Event.EVENT_DISPLAY_DIALOG_PLOT); MonoBehaviour other = (MonoBehaviour)arg.sender; AudioSource otherSpeaker = AddSpeaker(other.gameObject); TalkableCharacter sender = (TalkableCharacter)arg.sender; if (tem_Plot != null) { if (!tem_Plot.important) { if (tem_Plot.dialogs != null && tem_Plot.dialogs.Count > 0) { DisplayUnimportantDialog(tem_Plot.dialogs [0], new DisplayPlot(tem_Plot, otherSpeaker, sender)); } } else { PlotArray.Add(new DisplayPlot(tem_Plot, otherSpeaker, sender)); if (!IsDisplaying) { NextDialog(); } } } }
void OnDisplay(LogicArg arg) { TalkableCharacter character = (TalkableCharacter)arg.sender; NarrativePlotScriptableObject plot = (NarrativePlotScriptableObject)arg.GetMessage(M_Event.EVENT_DISPLAY_DIALOG_PLOT); if (plot.important) { if (character != null && character.NeedMoveCamera()) { character.MoveCamera(m_MainCamera); cameraBot.enabled = false; Moveable = false; m_isDisplay = true; } else { if (plot != null && plot.lockCamera) { Moveable = false; m_isDisplay = true; CameraNarrativeSensity = 0.03f; } } } // m_UseHeadBob = false; // m_Move = false; // m_CanJump = false; }
public void TalkToCharacter(TalkableCharacter characterToTalk) { GameManager.Instance.ChangeState(GameManager.GameState.Talking); AdaptCamToTalkableCharacter(characterToTalk); uIManager.CurrentTalkableCharacter = characterToTalk; characterToTalk.LetsTalk(); playerRigidbody.velocity = Vector3.zero; moveHorizontal = 0f; moveVertical = 0f; }
protected override void OnEndDisplayDialog(LogicArg arg) { base.OnEndDisplayDialog(arg); TalkableCharacter character = (TalkableCharacter)arg.GetMessage(M_Event.EVENT_END_DISPLAY_SENDER); if (character == this) { if (m_stateMachine.State == GirlState.Init) { m_stateMachine.State = GirlState.Walk; } m_realTalking = false; } }
public void AdaptCamToTalkableCharacter(TalkableCharacter talkableCharacter) { if (camMoveTween != null) { camMoveTween.Kill(); } if (camRotTween != null) { camRotTween.Kill(); } camTransform.localPosition = camLocalPosInit; camTransform.localEulerAngles = Vector3.zero; camMoveTween = camTransform.DOMove(talkableCharacter.camFramingPoint.position, 1f).SetEase(Ease.OutCubic); camRotTween = camTransform.DORotate(talkableCharacter.camFramingPoint.eulerAngles, 1f).SetEase(Ease.OutCubic); }
virtual protected void OnEndDisplayDialog(LogicArg arg) { TalkableCharacter character = (TalkableCharacter)arg.GetMessage(M_Event.EVENT_END_DISPLAY_SENDER); if (character == this) { if (isMainTalking) { if (MainTalkEndEvent != LogicEvents.None) { M_Event.FireLogicEvent(MainTalkEndEvent, new LogicArg(this)); } isMainTalking = false; IsMainEnded = true; } if (IsTalking && gameObject.activeSelf) { StartCoroutine(DelayBecomeTalkable(becomeTalkableDelay)); } } }
void Start() { talkableCharacter = GetComponent <TalkableCharacter>(); }
private void Update() { if (GameManager.Instance.CurrentGameState == GameManager.GameState.Walking) { moveHorizontal = Input.GetAxis("Horizontal"); moveVertical = Input.GetAxis("Vertical"); mousePanX = Input.GetAxis("Mouse X"); mousePanY = Input.GetAxis("Mouse Y"); currentcamRotX -= mousePanY * mouseSpeed * Time.deltaTime; playerTransform.Rotate(Vector3.up, mousePanX * mouseSpeed * Time.deltaTime); camTransform.localEulerAngles = new Vector3(Mathf.Clamp(camRotXInit + currentcamRotX, clampCamRotX.x, clampCamRotX.y), camTransform.localEulerAngles.y, camTransform.localEulerAngles.z); Ray checkGroundRay = new Ray(transform.position - Vector3.up * 0.02f, -Vector3.up); if (Physics.Raycast(checkGroundRay, out RaycastHit raycastHitGround, checkGroundDistance)) { playerRigidbody.useGravity = false; playerRigidbody.constraints = RigidbodyConstraints.FreezePositionY | RigidbodyConstraints.FreezeRotation; } //if (GameManager.Instance.CurrentGameState == GameManager.GameState.Walking) //{ Ray interactionRay = new Ray(camTransform.position, camTransform.forward); bool raycastInteraction = Physics.Raycast(interactionRay, out RaycastHit raycastHitInteraction, checkInteractionDistance, interactionLayerMask); if (raycastInteraction) { if (raycastHitInteraction.collider != null && raycastHitInteraction.collider.gameObject.layer != interactionLayer) { interactionLayer = raycastHitInteraction.collider.gameObject.layer; if (onInteractionLayerChanged != null) { onInteractionLayerChanged(interactionLayer); } } } else if (interactionLayer != 0) { interactionLayer = 0; onInteractionLayerChanged?.Invoke(interactionLayer); } if (Input.GetMouseButtonDown(0) && raycastInteraction) { Door doorRaycast = raycastHitInteraction.collider.GetComponent <Door>(); if (doorRaycast != null) { uIManager.HideTuto(); if (!doorRaycast.isOpened) { doorRaycast.Open(); } else { doorRaycast.Close(); } } TalkableCharacter talkableCharacter = raycastHitInteraction.collider.GetComponentInParent <TalkableCharacter>(); if (talkableCharacter != null) { TalkToCharacter(talkableCharacter); } } } }