Unity 5.3.4 (https://unity3d.com/get-unity) programını ücretsiz olarak indirelim ve kayıt için gerekenleri yapalım. Kurulumda bize “Standard Assets” ve “Windows Build Support” gerekiyor.

Screen Shot 04-07-16 at 10.11 AM

Kurulum bittiğinde, masaüstündeki kısayolu çift tıklatıp, üye bilgilerimiz ile aktivasyonu yapalım.

Screen Shot 04-07-16 at 10.13 AM

“New” düğmesine basarak 3D bir proje oluşturalım. Klasör seçimi size kalmış.

Screen Shot 04-07-16 at 10.17 AM

Kısa süre sonra projemiz ekran geliyor.

Screen Shot 04-07-16 at 10.18 AM

Boş harita içine ilk olarak bir yer ekleyelim. Bunu isterseniz Terrain, isterseniz Plane ile yapabilirsiniz.

Screen Shot 04-07-16 at 10.22 AM

Fare sağ tuş basılı iken WASD tuşları ile tasarım ekranında hareket edebilirsiniz.

Screen Shot 04-07-16 at 10.23 AM

Oyuncu olarak bir kapsül kullanabiliriz.

Screen Shot 04-07-16 at 10.25 AM

“Hierarchy” penceresinde “Main Camera” nesnesini kapsül üzerine sürükleyelim.

Screen Shot 04-07-16 at 10.28 AM

Kameranın “Transform” özelliğinde “Position” bölümünü düzenleyelim.

Screen Shot 04-07-16 at 10.30 AM

Kapsül nesnesini de aynı şekilde düzenleyelim, harita dışında kalmasın.

Screen Shot 04-07-16 at 10.32 AM

Artık kapsülün adını “Oyuncu” olarak değiştirelim, özellikler penceresinden “Rigidbody” ekleyelim.

Screen Shot 04-07-16 at 10.34 AM

“Rigidbody Component”inin kısıtlama özelliklerini değiştirelim.

Screen Shot 04-07-16 at 10.36 AM

Arasıra Ctrl+S ile haritamızı kaydetmemiz iyi olur, ilk kez kaydederken sahne adı soruluyor.

Screen Shot 04-07-16 at 10.37 AM

Ctrl+P tuşu ile de deneme ve denemeyi durdurma yapabilirsiniz.  Screen Shot 04-07-16 at 10.38 AMtuşları da kullanılabilir. Şu anda oyuncu hareket edemediği için ekran donmuş gibi kalıyor, birazdan kod kısmında ileri geri, sağa sola hareket özelliklerini kazandıracağız.

Oyuncu nesnesine “Add Component”den “oyuncuKontrolu – C Sharp” ekleyelim.

Screen Shot 04-07-16 at 10.43 AM

Kodlarımızı yazalım.

using UnityEngine;

[RequireComponent (typeof(Rigidbody))]
public class oyuncuKontrolu : MonoBehaviour {

[SerializeField]
private float speed = 5f;
[SerializeField]
private float lookSensitivity = 3f;

[SerializeField]
private Camera cam;

private Vector3 velocity = Vector3.zero;
private Vector3 rotation = Vector3.zero;
private float cameraRotationX = 0f;
private float currentCamRotX = 0f;

[SerializeField]
private float cameraRotLimit = 85f;

private Rigidbody rb;

void Start () {
//başlangıçta Rigidbody bilgisini alalım
rb = GetComponent<Rigidbody> ();
}

void Update () {
//her karede tuş basımı ve fare hareketini yakalayalım
float _xMove = Input.GetAxis (“Horizontal”);
float _zMove = Input.GetAxis (“Vertical”);

Vector3 _moveHorizontal = transform.right * _xMove;
Vector3 _moveVertical = transform.forward * _zMove;
Vector3 _velocity = (_moveHorizontal + _moveVertical).normalized * speed;

float _yRot = Input.GetAxisRaw (“Mouse X”);
Vector3 _rotation = new Vector3 (0f, _yRot, 0f) * lookSensitivity;
float _xRot = Input.GetAxisRaw (“Mouse Y”);
float _cameraRotationX = _xRot * lookSensitivity;

velocity = _velocity;
rotation = _rotation;
cameraRotationX = _cameraRotationX;
}

void FixedUpdate () {
//0.02 saniyede bir hareket edelim (Edit*Project Settings*Time)
if (velocity != Vector3.zero) {
rb.MovePosition (rb.position + velocity * Time.fixedDeltaTime);
}
rb.MoveRotation (rb.rotation * Quaternion.Euler (rotation));
if (cam != null) {
currentCamRotX -= cameraRotationX;
currentCamRotX = Mathf.Clamp (currentCamRotX, -cameraRotLimit, cameraRotLimit);
cam.transform.localEulerAngles = new Vector3 (currentCamRotX, 0f, 0f);
}
}
}

Oyuncu nesnesine geri döndüğümüzde Cam özelliğine “Main Camera”yı atayalım.

Screen Shot 04-07-16 at 11.05 AM

Kod yazım hatası yok ise projeyi deneyebilirsiniz. Şimdilik etraf beyaz olduğu için kıpırdama belli olmayabilir. Etrafa ağaç, çimen, evler eklemek gerekiyor.

Kontrol programında zıplama ve ateş etme yok; zaten silah, mermi gibi şeyleri daha yapmadık. Silah türleri, ateş etme türleri ve benzeri yapılabilecek şeyler var, sonra da ağda oynanabilen bir oyun haline de getirilebilir. Ateş edilen nesnelerin parçalanabilmesi, sağlık, oyuncunun özelleştirilebilmesi gibi yapılacak çok şey var.

Güncelleme:
https://www.facebook.com/media/set/?set=a.1006361562776141.1073742103.132831550129151&type=3 sadece resim olarak biraz daha ilerlediğimi paylaştım. Neler var: NavMesh (düşman yapay zekası), ateş edebilme, portal (ışınlanma) ve UI ile skor bilgisi