Kode masukan Anda sudah benar tetapi masih ada beberapa hal yang tidak tepat. Pertama, Anda menulis penginisialisasi (metode statis) di luar fungsi apa pun. Ingat ketika anda melakukannya di Unity3d C# maka akan selalu memberikan peringatan/kesalahan.
Jika Anda menggunakan C# jangan gunakan fungsi ini di konstruktor atau penginisialisasi bidang, Sebaliknya pindahkan inisialisasi ke fungsi Awake atau Start.
Jadi pertama-tama pindahkan garis semacam itu di salah satu fungsi.
Kedua Anda mendapatkan Vector3
dan mencoba menggunakannya sebagai referensi, artinya Anda mendapat referensi posisi berupa Vector3
dan setiap perubahan yang dilakukan pada variabel tersebut akan efektif, bukan itu masalahnya, tidak akan.
Tapi ya, Anda bisa melakukannya dengan mendapatkan Transform
atau GameObject
, mereka akan melakukannya untuk Anda.
Hal ketiga dan terakhir, Anda mencoba mengubah Vector3
komponen ("x" dalam kasus Anda) secara langsung, itu juga tidak dapat diterima untuk Unity. Yang dapat Anda lakukan adalah menetapkan posisi dengan new Vector3
atau membuat variabel Vector3
terpisah, mengubahnya, lalu menetapkannya ke posisi.
Jadi setelah semua alamat ini, kode Anda akan terlihat seperti ini,
using UnityEngine;
using System.Collections;
public class NewBehaviourScript : MonoBehaviour
{
Transform player;
// Use this for initialization
void Start ()
{
player = GameObject.FindGameObjectWithTag ("Player").transform;
}
// Update is called once per frame
void Update ()
{
if (Input.GetKeyDown (KeyCode.D)) {
// Remove one of these two implementations of changing position
// Either
Vector3 newPosition = player.position;
newPosition.x += 0.01f;
player.position = newPosition;
//Or
player.position = new Vector3 (player.position.x + 0.01f, player.position.y, player.position.z);
}
}
}
person
Hamza Hasan
schedule
19.02.2016