Ruch kamery c# Unity 2D

gry

#1

witam zacząłem od niedawna robić grę 2d w unity jednak mam problem z stworzeniem pewnego skryptu.
chodzi mi o to aby kamera poruszała się dopiero jeśli gracz dotknie jej końca. I aby działało to w lewą jak i prawą stronę.


#2

https://forum.unity.com/threads/rts-camera-script.72045/

W sumie fajne że mogę pisać posty i tylko wyszukiwać danych zamiast pisać od zera, ale lepiej by było żeby ludzie częściej używali google =).


#3

dziękuję serdecznie : )


#4

niestety nie rozwiązuje to moje problemu gdyż chodziło mi o coś podobnego do np. Rayman Legends


#5

Oh, zwykłe poruszanie się od lewej do prawej i tyle? No to łap.

using UnityEngine;
using System.Collections;

public class CameraFollow : MonoBehaviour
{
	public Transform target;            // The position that that camera will be following.
	public float smoothing = 5f;        // The speed with which the camera will be following.
	
	Vector3 offset;                     // The initial offset from the target.
	
	void Start ()
	{
		// Calculate the initial offset.
		offset = transform.position - target.position;
	}
	
	void FixedUpdate ()
	{
		// Create a postion the camera is aiming for based on the offset from the target.
		Vector3 targetCamPos = target.position + offset;
		
		// Smoothly interpolate between the camera's current position and it's target position.
		transform.position = Vector3.Lerp (transform.position, targetCamPos, smoothing * Time.deltaTime);
	}
}

#6

Paradoksalnie dobra kamera do platformówki to całkiem sporo kodu.
I różnych decyzji porojektowych.

Ale można zacząć od tej powyżej która trzyma gracza w centrum
z konfigurowalnym przesunięciem (offset)
i ma tylko kilka linijek.
(Ten Lerp bardzo podejrzanie wygląda… potencjalnie do poprawy)

Na tamtej można zacząc robić platformówkę.
A potem zacząć czytać o np Cinemachine - rozbudowany system kamer w unity.
I różne artykuły takie jak


Potem trochę matmy i interpolacji żeby sobie policzyć różne punkty i dostosować przesunięcia.
tip: Camera 2D ma właściwości orthographicSize i aspect z których można sprawdzić
ile sceny jest widoczne w osiach X i Y
a potem liczyć sobie kiedy transform wylatuje za oczekiwany obszar np 0.9 xLenght
i dostosowywać przesuniecie tak żeby nie gubić gracza ale nie szarpać za bardzo
momenty kiedy kamera się przesuwa, a kiedy czeka,
jak szybko się przesuwa
czego nie może pokazywać (zatrzymywanie się przy ścianach na koniec levelu)
itp itd będą bardzo zależna od potrzeb gry
(prędkości gracza, wertykalności planszy itp itd)