2017-10-11 8 views
1

이것은 코딩과 관련하여 처음으로 합법적 인 문제이며 어디에서 답을 찾을 수 있는지 잘 모릅니다.transform.position 벡터는 장면이 변할 때만 변경됩니다.

시간이 지날수록 X 차원으로 이동해야하는 개체가 있습니다. 여기에 다음과 같은 코드가 있습니다.

Vector3 temp = transform.position; 
temp.x += forwardSpeed * Time.deltaTime; 
transform.position = temp; 

디버그 할 때 나는 temp.x가 변경되지 않는다는 것을 알 수 있습니다. 그러나 카메라 영역 밖으로 객체를 이동하면 X가 변경되기 시작합니다. 이 정보가 충분하지 않다면 알려주십시오. 그러면 더 많은 코드를 제공 할 것입니다. 당신의 도움을 주셔서 감사합니다.

+0

'temp.x'를 수정하려고 시도한 변수를 보았습니까? 또한 예제가 완료되었다고 가정하면'transform.position.x + = forwardSpeed ​​* Time.deltaTime; '복사 할 필요가 없습니다 .- 분명히 월드 엑스 축을 따라 객체를 움직이는 데에만 신경 쓰면됩니다. – George

+0

이 오류가 발생하면 'UnityEngine.Transform.position'의 값 유형 반환 값을 수정할 수 없습니다. 값을 임시 변수에 저장하는 것을 고려하십시오. '그래서 값을 변경하기 위해 임시 변수를 사용합니다. –

답변

0

Vector3 temp = transform.position을 설정하면 transform.position 사본이 반환됩니다. 귀하의 경우에는
는 X 위치를 변경하는 적절한 방법은 다음과 같이해야합니다 :

transform.position += (Vector3.right * forwardSpeed * Time.deltaTime); 

가 Vector3.right가 shorthand of writing Vector3(1, 0, 0) 어디입니까.
이 방법을 사용하면 문이 transform.position 벡터가 아니라 해당 복사본을 업데이트하는지 확인할 수 있습니다.