Rozpoczynam mój rozwój przy użyciu Unity. robię coś takiego:Unity3D C# obliczyć prawidłowy do przodu po obrocie
if(Input.GetKey(KeyCode.A))newValues[1]-=this.turnSpeed*(float)Time.deltaTime;
if(Input.GetKey(KeyCode.D))newValues[1]+=this.turnSpeed*(float)Time.deltaTime;
transform.Rotate(0, newValues[1], 0);
if(Input.GetKey(KeyCode.W))newValues[0]+=this.speed*transform.forward.z*(float)Time.deltaTime;
if(Input.GetKey(KeyCode.S))newValues[0]-=this.speed*transform.forward.z*(float)Time.deltaTime;
transform.position = new Vector3(transform.position.x, transform.position.y, (float)newValues[0]);
Więc ja mogę obracać i poruszać, ale porusza się tylko w linii Z, wiem, że dzwonię specyficzny ruch z. Ale JavaScript mogę zrobić coś
transform.forward+=this.speed*transform.forward*(float)Time.deltaTime;
więc nie trzeba robić nowego procesu wektorowej i skopiować do osobnej zmiennej i działa jak czar, stosując rotację i stosując jako orientacji do siebie, gdy jest obrócony.
Powinieneś raczej edytować tytuł i tag. Stosowany znacznik jedności odnosi się do pojemnika wstrzykiwania zależności w bloku aplikacji MS. Prawdopodobnie odnosisz się do jedności-3D, także jeśli jest to gra, możesz dodać odpowiedni tag. – Tod
Co się stanie, jeśli wstawisz 'transform.forward + = this.speed * transform.forward * (float) Time.deltaTime;' w kodzie C#? Skrypty Javascript i C# kompilują się do tego samego pośredniego języka .NET, więc prawie wszystko, co możliwe w jednym, jest możliwe w drugim, jeśli kodowane jest trochę inaczej. –
To nie działa, jest zmienną tylko do odczytu. – Lefsler