- Kod: Zaznacz wszystko
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraMove : MonoBehaviour {
public Transform player;
public Transform cameraa;
int cameramovevalue=1;
void Update () {
if (cameramovevalue == 1)
{
CameraNormal();
}
else if (cameramovevalue == 2)
{
CameraUp();
}
}
void CameraNormal() {
Vector3 vector = new Vector3(3f, 2.5f, 0);
cameraa.position = player.position + vector;
cameraa.LookAt(player);
Debug.Log("1 " + cameramovevalue);
}
void CameraUp() {
Vector3 vector = new Vector3(3f, 12.5f, 0);
cameraa.position = player.position + vector;
cameraa.LookAt(player);
Debug.Log("2 " + cameramovevalue);
}
void OnTriggerEnter(Collider other)
{
cameramovevalue = 2;
}
}
Na samym początku przepisałem zmiennej cameramovevalue wartość 1. Następnie jest metoda Update, która ciągle sprawdza jaka jest wartość zmiennej cameramovevalue. Jeśli wartość owej zmiennej jest równa 1 to wykonuje się metoda CameraNormal, jeśli wartość jest równa 2 wykonuje się metoda CameraUp. Również w kodzie znajduje się metoda OnTriggerEnter, która ustawia wartość dla zmiennej cameramovevalue na 2.
Podczas uruchomienia gry stale wyświetla się (w konsoli) wartość 1 co oznacza, że działa to wszystko aktualnie prawidłowo gdyż początkowo wartość cameramovevalue jest równa 1. Jeśli "player" wejdzie w kolizje z obiektem do którego jest przepisany skrypt zaczyna się pojawiać jednocześnie wartość 2 i 1. Czemu tak jest? Nie powinno podczas kolizji z obiektem zmienić się wartość zmiennej cameramovevalue z 1 na 2 i pozostać tak do końca?