Wpis z mikrobloga

#gamedev #unity

Szperając po internecie za fragmentami kodu, znalazłem parę przydatnych elementów - założenie jest takie żeby kamera poruszała się delikatnie razem z kursorem a postać do tego kursora dobiegała. W oryginale chciałem zrobić automatyczne dobieganie żeby sterowanie było tylko na myszkę ale na samym środku postać kręciła mi się w kółko więc zrezygnowałem i teraz rusza się na wciśnięcie klawisza.
Tylko teraz ta kamera, może gif to lepiej wyjaśni :/ . Skrypt działa ale jakoś muszę jeszcze przetłumaczyć miejsce kursora na miejsce kamery bo teraz to lipnie wygląda... maksymalnie powinien się ruszać po osi 0,1 :/ .

edit: bo zapomnę... kod:

using UnityEngine;

using System.Collections;

public class CameraMobility : MonoBehaviour {


public float mouseSensitivity = 1.0f;

private Vector3 lastPosition;


// Update is called once per frame

void FixedUpdate () {

Vector3 delta = Input.mousePosition - lastPosition;

transform.Translate(delta.x * mouseSensitivity, delta.y * mouseSensitivity, 0);

lastPosition = Input.mousePosition;

}

}
Pobierz M.....P - #gamedev #unity

Szperając po internecie za fragmentami kodu, znalazłem p...
źródło: comment_XazQygfNYECXoSYmru0nqzrUYYqXhWuP.gif
  • 7
Trochę pozmieniałem i niestety nadal to samo, ale na małej czułości lepiej to wygląda (chociaż i tak wyjeżdża poza 0,1 o wieeeele punktów :/ )

public class CameraMobility : MonoBehaviour {

public float mouseSensitivity = 1.0f;

// Update is called once per frame
void FixedUpdate () {
var lastPosition = Camera.main.ScreenToWorldPoint (Input.mousePosition);
Vector3 delta = Input.mousePosition - lastPosition;
transform.Translate(delta.x * mouseSensitivity, delta.y * mouseSensitivity, 0);
}
}
@jigsaw96: Hmm, biorąc pod uwagę ten przykład stąd:

http://answers.unity3d.com/questions/143505/mathfclamp.html

//Clamp the Y-value of the Mouse Input to not exceed certain angle when tilting camera
private var ytargetRotation : float = 10;
private var min=-80;
private var max=80;
function Update () {
var yAxisMove : float = Input.GetAxis("Mouse Y")*5;
ytargetRotation+=-yAxisMove;
ytargetRotation=ytargetRotation % 360;
ytargetRotation=Mathf.Clamp(ytargetRotation,min,max);
}

Musiałbym jakoś wyciągnąć z ruchu kursora wartości z jego miejsca i wtedy dopiero przypisać :/ . Brzmi
@jigsaw96: Chociaż nie, prościej by było wziąć zmienne z obiektu kamery - transform - i odpowiednio przypisać do x max 0,1 i do y też masz 0,1 :/ .
Albo jeszcze inaczej, wziąć te zmienne, podzielić /100 i wtedy dopisać do transform obiektu kamery :/ .
@jigsaw96: Dobra, udało mi się zrobić tę kamerkę. Teraz dodać resztę trzeba, wykombinować jakąś mapę i następnie jakoś funkcję skoku zrobić żeby można było z poziomu 2D "wskakiwać" na oznaczone obiekty i zdobywać ukryte znajdźki :> .