nikki
@nikki (Nikki Mei)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Unity-シーン遷移先のプレイヤー位置について

解決したいこと

シーン遷移先のプレイヤー位置を、移動可能マップ内の特定の位置に設定する。

◆現状
Unity2Dにて、NPCに触れたらシーン遷移させようとしています。

◆問題点
フェイドアウト後にシーン遷移するのですが、マップの外に出てしまいます。

任意のシーン内の指定の場所に遷移させるには、どのような解決策がありますでしょうか。
また、例えばゲームオブジェクトの隣に移動させる方法があれば、それも採用したいと思っています。
理想は、シーン先のtransform位置をスクリプトで直接指定しない方法であれば嬉しいです。

よろしくお願いいたします!

001.png
002.png

以下、NPCにアタッチしたTeleportToのスクリプトです。

該当するソースコード

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class TeleportTo : MonoBehaviour {
    [Tooltip("Enter the scene name")]
    public string scene;
    [Tooltip("Assign a unique ID to this teleport")]
    public string teleportName;

    public TeleportFrom entry;
    [Tooltip("Enter the duration of transition to the new scene in seconds")]
    public float transitionTime = 1f;
    private bool openScene;
    private bool opengameobjects;

    public BoxCollider2D collider;

    // Use this for initialization
    void Start () {
        entry.teleportName = teleportName;

    }

    // Update is called once per frame
    void Update () {
        if(openScene)
        {
            transitionTime -= Time.deltaTime;
            if(transitionTime <= 0)
            {
                openScene = false;
                SceneManager.LoadScene(scene);
            }

        }
    }

    private void OnTriggerEnter2D(Collider2D other)
    {
        if(other.tag == "Player")
        {
            openScene = true;
            GameManager.instance.fadingBetweenAreas = true;

            GameMenu.instance.gotItemMessage.SetActive(false);

            ScreenFade.instance.FadeToBlack();

            PlayerController.instance.areaTransitionName = teleportName;

        }
    }

    private void OnDrawGizmos()
    {
        Gizmos.color = new Color(0, 255, 0, .3f);
        Gizmos.matrix = transform.localToWorldMatrix;
        Gizmos.DrawCube(new Vector3(collider.offset.x, collider.offset.y, -2), collider.size);
    }
}


NPCの子要素に「TeleportFrom」というスクリプトもアタッチされています。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TeleportFrom : MonoBehaviour {

    [HideInInspector]
    public string teleportName;

    // Use this for initialization
    void Start () {
        if(teleportName == PlayerController.instance.areaTransitionName)
        {
            PlayerController.instance.transform.position = transform.position;
            PlayerController.instance.GetComponent<SpriteRenderer>().sortingLayerName = "Player";
        }

        ScreenFade.instance.FadeFromBlack();
        GameManager.instance.fadingBetweenAreas = false;
    }

    // Update is called once per frame
    void Update () {

    }

}

疑問点や仮説

・teleport toは(シーン遷移元&遷移先)で対になっていなければいけないのか?
・シーンではなくゲームオブジェクトの隣に遷移させることはできないのか?

0

No Answers yet.

Your answer might help someone💌