Jump to content
Unity Insider Forum
Sign in to follow this  
Blubbi

[Erledigt]CameraBewegen

Recommended Posts

Hallo zusammen,

ich bin seit paar Tagen dabei mich mit Unity 3D einzuarbeiten und danach C# anzueignen.

Der Zeit sehe ich mir ein YouTube Tutorial für ein 2D Top-down Game an. In den Tutorial wird per Tilemap die 2D Map erstellt,  das Camera Movement wurde so gescriptet das man den Bereich der Map, die Minimale und Maximale X und Y Achse einstellt damit die Camera nicht ins graue hinaus geht. Mit einen GameObject wird auf der Map wird per Trigger die Minimale und Maximale X und Y Achse eine Wert dazu addiert um in einen anderen Sektor zukommen. Da ich immer etwas herumspiele würde gerne das Trigger Script abändern. Zurzeit arbeitet das Script das er den Wert von X und Y addiert oder Subtrahiert. Ich würde es so umbauen das ich den Inspector die neuen Werte für die Camera eintrage und die dann an der Camera übertragen wird. Weis aber noch nicht wie es funktioniert. Habt ihr da für mich ein Tipp? 

Script für die Camera Bewegung

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

public class CameraMovement : MonoBehaviour
{

    public Transform target;
    public float smoothing;
    public Vector2 maxPosition;
    public Vector2 minPosition;


    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void LateUpdate()
    {
        if (transform.position != target.position)
        {
            Vector3 targetPosition = new Vector3(target.position.x, 
                                                 target.position.y,
                                                 transform.position.z);

            targetPosition.x = Mathf.Clamp(targetPosition.x,
                                           minPosition.x,
                                           maxPosition.x);
            targetPosition.y = Mathf.Clamp(targetPosition.y,
                                           minPosition.y,
                                           maxPosition.y);

            transform.position = Vector3.Lerp(transform.position, 
                                              targetPosition, smoothing);
        }
    }
}

Script wenn der Player den Collider berührt und die X und Y werte addiert werden

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

public class RoomMove : MonoBehaviour
{
    public Vector2 cameraChange;
    public Vector3 playerChange;
    private CameraMovement cam;
    public bool needText;
    public string placeName;
    public GameObject text;
    public Text placeText;


    // Start is called before the first frame update
    void Start()
    {
        cam = Camera.main.GetComponent<CameraMovement>();
    }

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

    private void OnTriggerEnter2D(Collider2D other)
    {
        if(other.CompareTag("Player"))
        {
            cam.minPosition += cameraChange;
            cam.maxPosition += cameraChange;
            other.transform.position += playerChange;
            if(needText)
            {
                StartCoroutine(placeNameCo());
            }
        }
    }

    private IEnumerator placeNameCo()
    {
        text.SetActive(true);
        placeText.text = placeName;
        yield return new WaitForSeconds(0.8f);
        text.SetActive(false);
    }
}

 

Edited by Blubbi
Erledigt

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×