Tôi đang bắt đầu phát triển của mình bằng Unity. tôi đang làm một cái gì đó như thế:Unity3D C# tính toán chuyển tiếp chính xác sau khi quay
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]);
Vì vậy, tôi xoay và tôi có thể di chuyển, nhưng nó di chuyển chỉ trong dòng Z, tôi biết tôi đang kêu gọi phong trào cụ thể Z. Nhưng với Javascript tôi có thể làm điều gì đó
transform.forward+=this.speed*transform.forward*(float)Time.deltaTime;
Vì vậy, tôi không cần phải làm quá trình vector mới và sao chép vào một biến riêng biệt và nó hoạt động như một nét duyên dáng, sử dụng luân chuyển và sử dụng như định hướng cho mình khi nó xoay.
Bạn có lẽ nên sửa tiêu đề và thẻ của mình. Thẻ thống nhất như được sử dụng đề cập đến vùng chứa tiêm phụ thuộc trong khối ứng dụng MS. Có thể bạn đang đề cập đến Unity-3D, nếu điều này là để chơi game, bạn có thể muốn thêm một thẻ thích hợp. – Tod
Điều gì sẽ xảy ra nếu bạn đặt 'transform.forward + = this.speed * transform.forward * (float) Time.deltaTime;' trong mã C#? Javascript và C# từng biên dịch sang cùng ngôn ngữ trung gian .NET, vì vậy hầu hết mọi thứ có thể có trong một là có thể trong ngôn ngữ khác, nếu được mã hóa một chút khác nhau. –
Nó không hoạt động, nó là một biến chỉ đọc – Lefsler