Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C#: Unity: Kameran kääntäminen tasaisesti

E1ss [23.09.2017 12:32:38]

#

Olen tekemässä autopeliä jossa kamera kuvaa autoa ylhäältäpäin. Käytän unityä ja C#. Ideana on että kun auto liikkuu eteenpäin kamera seuraa pienellä viiveellä että liikkeestä tulee tasaista ja nopeat nytkähdykset eivät näy kamerassa. Sain kirjoitettua koodin joka seuraa auton paikkaa ja pysyy perässä toivomalla tavallani. Nyt vain tuli ongelma kun minun pitäisi saada kamera myös kääntymään samalla tavalla kuin auto. Kameran pitää kääntyä vain y akselin suuntaisesti ja se on muuten x akselin suuntaisesti kääntyneenä 90 ja z akselin suuntaisesti 0 astetta. Osaako joku täällä sen verran unityä ja C# että voisi neuvoa mitä minun pitää lisätä alla olevaan koodiin että saan kameran kääntymään tasaisesti samaan suuntaan kuin auto.

public float interpVelocity;
public float minDistance;
public float followDistance;
public GameObject target;
public Vector3 offset;
Vector3 targetPos;

// Use this for initialization
void Start()
{
    targetPos = transform.position;
}

// Update is called once per frame
void FixedUpdate()
{
    if (target)
    {
        Vector3 posNoZ = transform.position;
        posNoZ.z = target.transform.position.z;

        Vector3 targetDirectionZ = (target.transform.position - posNoZ);

        interpVelocity = targetDirectionZ.magnitude * 5f;

        targetPos = transform.position + (targetDirectionZ.normalized * interpVelocity * Time.deltaTime);

        transform.position = Vector3.Lerp(transform.position, targetPos + offset, 0.25f);


        Vector3 posNoX = transform.position;
        posNoX.x = target.transform.position.x;

        Vector3 targetDirectionX = (target.transform.position - posNoX);

        interpVelocity = targetDirectionX.magnitude * 5f;

        targetPos = transform.position + (targetDirectionX.normalized * interpVelocity * Time.deltaTime);

        transform.position = Vector3.Lerp(transform.position, targetPos + offset, 0.25f);

    }
}

Metabolix [24.09.2017 21:24:35]

#

Mitä tarkoittaa kääntyminen "y-akselin suuntaisesti"? Tarkoitatko ehkä y-akselin ympäri? Missä sinulla edes on y-akseli, onko se ylös?

Ilmeisesti haluat, että auton menosuunta on kuvassa ylhäällä. Dokumentaatiosta päätellen tämä onnistuu Unityssä asettamalla kameran transform.up auton kulkusuunnan mukaiseksi. Jos haluat siihen vastaavaa joustoa kuin tuohon sijaintiin, varmaan pitää kopioida koko koodi ja korvata kaikki position-kohdat auton osalta kulkusuunnalla ja kameran osalta up-asetuksella.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta