2016-05-16 3 views
-3

Я пытаюсь вернуть камеру обратно игроку, если камера не находится там, где она останавливается, но я продолжаю получать ошибку в заголовке. Вот мой код:Невозможно преобразовать тип "unityengine.vector3" в "float"

public float minPos = 0.3234783f; 
public float maxPos = 40f; 

Vector3 tempPos; 
public float playerPos; 

// Use this for initialization 
void Start() { 

} 

// Update is called once per frame 
void Update() { 
    playerPos = GameObject.Find ("Player").transform.position; 

    tempPos = transform.position; 

    tempPos.z = -10f; 

    if (transform.position.x < minPos) { 
     tempPos.x = minPos; 
    } else 
     tempPos.x = playerPos; 

    transform.position = tempPos; 
} 

Я довольно новичок в кодировании, так что извините, если это действительно глупая ошибка.

+2

это потому, что вы не можете преобразовать тип «unityengine.vector3» в «поплавок». – Fattie

ответ

0

Проблема эта линия, которую IDE должен был сказать вам:

playerPos = GameObject.Find ("Player").transform.position; 

playerPos имеет тип float но position свойство типа Vector3, и нет никакого преобразования между ними. Вы можете сделать playerPos в Vector3, чтобы исправить его и соответствующим образом скорректировать код.

+0

Итак, теперь у меня такая же точная ошибка в строке 23: \ – user6210476

+0

@ пользователь6210476 та же причина есть. 'tempPos.x = playerPos;' не работает, потому что playerPos теперь является вектором. вы должны переписать свой код. –

2

Ваша проблема здесь playerPos = GameObject.Find("Player").transform.position;

transform.position; есть Vector3 нет поплавок. playerPos определяется как float, поэтому вы не можете сохранить Vector3 для плавания. Изменение public float playerPos; в public Vector3 playerPos;

Также измените

tempPos.x = playerPos; 

в
tempPos.x = playerPos.x;