{"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal'da BlueprintCallable TakeDamage fonksiyonu olan health component oluştur.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Unity için basit player movement yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de coin toplama sistemi C# ile nasıl yapılır?", "answer": "Coin objesinde trigger collider olmalı. Player objesini tag veya component ile ayırt edebilirsin.\n\n```csharp\nusing UnityEngine;\n\npublic class Coin : MonoBehaviour\n{\n [SerializeField] private int value = 1;\n\n private void OnTriggerEnter(Collider other)\n {\n if (!other.TryGetComponent(out var wallet))\n return;\n\n wallet.AddCoins(value);\n Destroy(gameObject);\n }\n}\n\npublic class PlayerWallet : MonoBehaviour\n{\n public int Coins { get; private set; }\n\n public void AddCoins(int amount)\n {\n Coins += amount;\n }\n}\n```"} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal'da BlueprintCallable TakeDamage fonksiyonu olan health component oluştur.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal Engine'de can sistemi için UHealthComponent yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Unreal Engine'de UPROPERTY ve UFUNCTION ne işe yarar?", "answer": "`UPROPERTY`, değişkeni Unreal reflection sistemine tanıtır. Böylece garbage collector, Blueprint, editor ve serialization sistemi değişkeni görebilir.\n\n`UFUNCTION`, C++ fonksiyonunu reflection sistemine açar. Blueprint'ten çağırmak veya event olarak kullanmak için gerekir.\n\n```cpp\nUPROPERTY(EditAnywhere, BlueprintReadWrite, Category=\"Stats\")\nfloat MaxHealth = 100.0f;\n\nUFUNCTION(BlueprintCallable, Category=\"Stats\")\nvoid TakeDamageAmount(float Amount);\n```\n\nUnreal'da UObject referanslarını çoğu zaman `UPROPERTY` ile tutmak önemlidir; aksi halde GC davranışı sorun çıkarabilir."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal C++ ile Actor içinde rotating pickup yaz.", "answer": "Pickup için `AActor` türetip mesh'i root'a bağlayabilir ve Tick içinde döndürebilirsin.\n\n```cpp\nUCLASS()\nclass ARotatingPickup : public AActor\n{\n GENERATED_BODY()\n\npublic:\n ARotatingPickup();\n virtual void Tick(float DeltaSeconds) override;\n\nprotected:\n UPROPERTY(VisibleAnywhere)\n UStaticMeshComponent* Mesh;\n\n UPROPERTY(EditAnywhere, Category=\"Pickup\")\n float RotationSpeed = 90.0f;\n};\n```\n\n```cpp\nARotatingPickup::ARotatingPickup()\n{\n PrimaryActorTick.bCanEverTick = true;\n Mesh = CreateDefaultSubobject(TEXT(\"Mesh\"));\n RootComponent = Mesh;\n}\n\nvoid ARotatingPickup::Tick(float DeltaSeconds)\n{\n Super::Tick(DeltaSeconds);\n AddActorLocalRotation(FRotator(0.0f, RotationSpeed * DeltaSeconds, 0.0f));\n}\n```"} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal Engine Character class içinde hareket input'u bağla.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity C# ile karakter hareketi örneği ver.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal Engine'de can sistemi için UHealthComponent yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Kısa açıkla: Unity için basit player movement yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de oyuncu hareket kodunu temiz şekilde göster.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de ScriptableObject ile item tanımı nasıl yapılır?", "answer": "ScriptableObject, item verisini prefab veya sahne bağımlılığı olmadan saklamak için uygundur.\n\n```csharp\nusing UnityEngine;\n\n[CreateAssetMenu(menuName = \"Game/Item\")]\npublic class ItemDefinition : ScriptableObject\n{\n public string id;\n public string displayName;\n public Sprite icon;\n public int maxStack = 1;\n}\n```\n\nProject penceresinde sağ tıklayıp `Create > Game > Item` ile asset oluşturabilirsin. Runtime state'i ScriptableObject üzerinde değil, inventory component içinde tutulmalıdır."} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity 2D'de Rigidbody2D ile oyuncu hareketi yaz.", "answer": "Bu örnek top-down 2D hareket içindir. Player objesinde `Rigidbody2D` olmalı ve gravity scale genelde 0 yapılır.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(Rigidbody2D))]\npublic class PlayerMovement2D : MonoBehaviour\n{\n [SerializeField] private float speed = 6f;\n\n private Rigidbody2D rb;\n private Vector2 input;\n\n private void Awake()\n {\n rb = GetComponent();\n }\n\n private void Update()\n {\n input.x = Input.GetAxisRaw(\"Horizontal\");\n input.y = Input.GetAxisRaw(\"Vertical\");\n input = input.normalized;\n }\n\n private void FixedUpdate()\n {\n rb.linearVelocity = input * speed;\n }\n}\n```\n\nEski Unity sürümlerinde `linearVelocity` yerine `velocity` kullanılır."} {"domain": "unity", "instruction": "Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: UE C++ AddMovementInput örneği ver.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal'da BlueprintCallable TakeDamage fonksiyonu olan health component oluştur.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal Blueprint ile kapı açma mantığını anlat.", "answer": "Kapı actor'ünde `Box Collision`, kapı mesh'i ve timeline bulunur. Player overlap olduğunda timeline çalışır, timeline değeriyle kapının rotation veya location değeri interpolate edilir.\n\nAkış:\n\n- `OnComponentBeginOverlap` tetiklenir.\n- Overlap eden actor player mı kontrol edilir.\n- Timeline `Play` çağrılır.\n- Timeline update pin'inde `SetRelativeRotation` veya `SetRelativeLocation` kullanılır.\n- Çıkışta `OnComponentEndOverlap` ile timeline reverse yapılabilir.\n\nC++ gerekiyorsa aynı mantık `UBoxComponent` ve `FTimeline` ile kurulabilir."} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de coin toplama sistemi C# ile nasıl yapılır?", "answer": "Coin objesinde trigger collider olmalı. Player objesini tag veya component ile ayırt edebilirsin.\n\n```csharp\nusing UnityEngine;\n\npublic class Coin : MonoBehaviour\n{\n [SerializeField] private int value = 1;\n\n private void OnTriggerEnter(Collider other)\n {\n if (!other.TryGetComponent(out var wallet))\n return;\n\n wallet.AddCoins(value);\n Destroy(gameObject);\n }\n}\n\npublic class PlayerWallet : MonoBehaviour\n{\n public int Coins { get; private set; }\n\n public void AddCoins(int amount)\n {\n Coins += amount;\n }\n}\n```"} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de oyuncu hareket kodunu temiz şekilde göster.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Kod örneğiyle göster: MonoBehaviour içinde WASD movement nasıl yazılır?", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal Blueprint ile kapı açma mantığını anlat.", "answer": "Kapı actor'ünde `Box Collision`, kapı mesh'i ve timeline bulunur. Player overlap olduğunda timeline çalışır, timeline değeriyle kapının rotation veya location değeri interpolate edilir.\n\nAkış:\n\n- `OnComponentBeginOverlap` tetiklenir.\n- Overlap eden actor player mı kontrol edilir.\n- Timeline `Play` çağrılır.\n- Timeline update pin'inde `SetRelativeRotation` veya `SetRelativeLocation` kullanılır.\n- Çıkışta `OnComponentEndOverlap` ile timeline reverse yapılabilir.\n\nC++ gerekiyorsa aynı mantık `UBoxComponent` ve `FTimeline` ile kurulabilir."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal Engine Character class içinde hareket input'u bağla.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de coin toplama sistemi C# ile nasıl yapılır?", "answer": "Coin objesinde trigger collider olmalı. Player objesini tag veya component ile ayırt edebilirsin.\n\n```csharp\nusing UnityEngine;\n\npublic class Coin : MonoBehaviour\n{\n [SerializeField] private int value = 1;\n\n private void OnTriggerEnter(Collider other)\n {\n if (!other.TryGetComponent(out var wallet))\n return;\n\n wallet.AddCoins(value);\n Destroy(gameObject);\n }\n}\n\npublic class PlayerWallet : MonoBehaviour\n{\n public int Coins { get; private set; }\n\n public void AddCoins(int amount)\n {\n Coins += amount;\n }\n}\n```"} {"domain": "unreal", "instruction": "Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal Engine'de can sistemi için UHealthComponent yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: MonoBehaviour içinde WASD movement nasıl yazılır?", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "UE C++ AddMovementInput örneği ver.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Unreal C++ ile basit player movement yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal Engine'de can sistemi için UHealthComponent yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "UE C++ AddMovementInput örneği ver.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity C# ile karakter hareketi örneği ver.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal Engine'de UPROPERTY ve UFUNCTION ne işe yarar?", "answer": "`UPROPERTY`, değişkeni Unreal reflection sistemine tanıtır. Böylece garbage collector, Blueprint, editor ve serialization sistemi değişkeni görebilir.\n\n`UFUNCTION`, C++ fonksiyonunu reflection sistemine açar. Blueprint'ten çağırmak veya event olarak kullanmak için gerekir.\n\n```cpp\nUPROPERTY(EditAnywhere, BlueprintReadWrite, Category=\"Stats\")\nfloat MaxHealth = 100.0f;\n\nUFUNCTION(BlueprintCallable, Category=\"Stats\")\nvoid TakeDamageAmount(float Amount);\n```\n\nUnreal'da UObject referanslarını çoğu zaman `UPROPERTY` ile tutmak önemlidir; aksi halde GC davranışı sorun çıkarabilir."} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: UE C++ UActorComponent tabanlı health component örneği ver.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: UE C++ AddMovementInput örneği ver.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Unreal'da Character hareket kodunu temiz şekilde göster.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "En temiz mimariyle öner: MonoBehaviour içinde WASD movement nasıl yazılır?", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de ScriptableObject ile item tanımı nasıl yapılır?", "answer": "ScriptableObject, item verisini prefab veya sahne bağımlılığı olmadan saklamak için uygundur.\n\n```csharp\nusing UnityEngine;\n\n[CreateAssetMenu(menuName = \"Game/Item\")]\npublic class ItemDefinition : ScriptableObject\n{\n public string id;\n public string displayName;\n public Sprite icon;\n public int maxStack = 1;\n}\n```\n\nProject penceresinde sağ tıklayıp `Create > Game > Item` ile asset oluşturabilirsin. Runtime state'i ScriptableObject üzerinde değil, inventory component içinde tutulmalıdır."} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de coin toplama sistemi C# ile nasıl yapılır?", "answer": "Coin objesinde trigger collider olmalı. Player objesini tag veya component ile ayırt edebilirsin.\n\n```csharp\nusing UnityEngine;\n\npublic class Coin : MonoBehaviour\n{\n [SerializeField] private int value = 1;\n\n private void OnTriggerEnter(Collider other)\n {\n if (!other.TryGetComponent(out var wallet))\n return;\n\n wallet.AddCoins(value);\n Destroy(gameObject);\n }\n}\n\npublic class PlayerWallet : MonoBehaviour\n{\n public int Coins { get; private set; }\n\n public void AddCoins(int amount)\n {\n Coins += amount;\n }\n}\n```"} {"domain": "unreal", "instruction": "Unreal C++ ile basit player movement yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal C++ derleme hatalarında nasıl debug yapılır?", "answer": "Önce derleyicinin verdiği ilk hataya bak. Unreal build çıktısında sonraki hatalar çoğu zaman ilk hatanın sonucudur.\n\nKontrol listesi:\n\n- Header dosyasında `GENERATED_BODY()` doğru yerde mi?\n- `.generated.h` include'u en son include mu?\n- Sınıf adı dosya ve constructor adıyla uyumlu mu?\n- Eksik module dependency var mı?\n- Pointer tipleri forward declaration ile yetiyor mu, yoksa include gerekli mi?\n\nReflection hatalarında Unreal Editor'ü kapatıp temiz build almak da gerekebilir."} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity için basit player movement yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Kod örneğiyle göster: UE C++ UActorComponent tabanlı health component örneği ver.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal'da BlueprintCallable TakeDamage fonksiyonu olan health component oluştur.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal'da Character hareket kodunu temiz şekilde göster.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal C++ derleme hatalarında nasıl debug yapılır?", "answer": "Önce derleyicinin verdiği ilk hataya bak. Unreal build çıktısında sonraki hatalar çoğu zaman ilk hatanın sonucudur.\n\nKontrol listesi:\n\n- Header dosyasında `GENERATED_BODY()` doğru yerde mi?\n- `.generated.h` include'u en son include mu?\n- Sınıf adı dosya ve constructor adıyla uyumlu mu?\n- Eksik module dependency var mı?\n- Pointer tipleri forward declaration ile yetiyor mu, yoksa include gerekli mi?\n\nReflection hatalarında Unreal Editor'ü kapatıp temiz build almak da gerekebilir."} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de null reference exception nasıl debug edilir?", "answer": "`NullReferenceException`, null olan bir değişkenin alanına veya metoduna eriştiğini gösterir. Inspector referansı atanmış mı, `GetComponent` sonucu null mı ve obje sahnede aktif mi kontrol et.\n\n```csharp\n[SerializeField] private Transform target;\n\nprivate void Awake()\n{\n if (target == null)\n {\n Debug.LogError(\"Target referansı Inspector'dan atanmadı.\", this);\n enabled = false;\n return;\n }\n}\n```\n\nHata satırına çift tıkla, o satırdaki her referansı tek tek kontrol et."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity için basit player movement yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Unity'de ScriptableObject ile item tanımı nasıl yapılır?", "answer": "ScriptableObject, item verisini prefab veya sahne bağımlılığı olmadan saklamak için uygundur.\n\n```csharp\nusing UnityEngine;\n\n[CreateAssetMenu(menuName = \"Game/Item\")]\npublic class ItemDefinition : ScriptableObject\n{\n public string id;\n public string displayName;\n public Sprite icon;\n public int maxStack = 1;\n}\n```\n\nProject penceresinde sağ tıklayıp `Create > Game > Item` ile asset oluşturabilirsin. Runtime state'i ScriptableObject üzerinde değil, inventory component içinde tutulmalıdır."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity 2D'de Rigidbody2D ile oyuncu hareketi yaz.", "answer": "Bu örnek top-down 2D hareket içindir. Player objesinde `Rigidbody2D` olmalı ve gravity scale genelde 0 yapılır.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(Rigidbody2D))]\npublic class PlayerMovement2D : MonoBehaviour\n{\n [SerializeField] private float speed = 6f;\n\n private Rigidbody2D rb;\n private Vector2 input;\n\n private void Awake()\n {\n rb = GetComponent();\n }\n\n private void Update()\n {\n input.x = Input.GetAxisRaw(\"Horizontal\");\n input.y = Input.GetAxisRaw(\"Vertical\");\n input = input.normalized;\n }\n\n private void FixedUpdate()\n {\n rb.linearVelocity = input * speed;\n }\n}\n```\n\nEski Unity sürümlerinde `linearVelocity` yerine `velocity` kullanılır."} {"domain": "unreal", "instruction": "Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal C++ derleme hatalarında nasıl debug yapılır?", "answer": "Önce derleyicinin verdiği ilk hataya bak. Unreal build çıktısında sonraki hatalar çoğu zaman ilk hatanın sonucudur.\n\nKontrol listesi:\n\n- Header dosyasında `GENERATED_BODY()` doğru yerde mi?\n- `.generated.h` include'u en son include mu?\n- Sınıf adı dosya ve constructor adıyla uyumlu mu?\n- Eksik module dependency var mı?\n- Pointer tipleri forward declaration ile yetiyor mu, yoksa include gerekli mi?\n\nReflection hatalarında Unreal Editor'ü kapatıp temiz build almak da gerekebilir."} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de oyuncu hareket kodunu temiz şekilde göster.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal Engine'de can sistemi için UHealthComponent yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Unreal'da Character hareket kodunu temiz şekilde göster.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Unreal Engine'de UPROPERTY ve UFUNCTION ne işe yarar?", "answer": "`UPROPERTY`, değişkeni Unreal reflection sistemine tanıtır. Böylece garbage collector, Blueprint, editor ve serialization sistemi değişkeni görebilir.\n\n`UFUNCTION`, C++ fonksiyonunu reflection sistemine açar. Blueprint'ten çağırmak veya event olarak kullanmak için gerekir.\n\n```cpp\nUPROPERTY(EditAnywhere, BlueprintReadWrite, Category=\"Stats\")\nfloat MaxHealth = 100.0f;\n\nUFUNCTION(BlueprintCallable, Category=\"Stats\")\nvoid TakeDamageAmount(float Amount);\n```\n\nUnreal'da UObject referanslarını çoğu zaman `UPROPERTY` ile tutmak önemlidir; aksi halde GC davranışı sorun çıkarabilir."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal Engine Character class içinde hareket input'u bağla.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Unity C# ile karakter hareketi örneği ver.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de coin toplama sistemi C# ile nasıl yapılır?", "answer": "Coin objesinde trigger collider olmalı. Player objesini tag veya component ile ayırt edebilirsin.\n\n```csharp\nusing UnityEngine;\n\npublic class Coin : MonoBehaviour\n{\n [SerializeField] private int value = 1;\n\n private void OnTriggerEnter(Collider other)\n {\n if (!other.TryGetComponent(out var wallet))\n return;\n\n wallet.AddCoins(value);\n Destroy(gameObject);\n }\n}\n\npublic class PlayerWallet : MonoBehaviour\n{\n public int Coins { get; private set; }\n\n public void AddCoins(int amount)\n {\n Coins += amount;\n }\n}\n```"} {"domain": "unreal", "instruction": "Unreal'da BlueprintCallable TakeDamage fonksiyonu olan health component oluştur.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal Engine Character class içinde hareket input'u bağla.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de oyuncu hareket kodunu temiz şekilde göster.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal'da Character hareket kodunu temiz şekilde göster.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "UE C++ AddMovementInput örneği ver.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal C++ ile Actor içinde rotating pickup yaz.", "answer": "Pickup için `AActor` türetip mesh'i root'a bağlayabilir ve Tick içinde döndürebilirsin.\n\n```cpp\nUCLASS()\nclass ARotatingPickup : public AActor\n{\n GENERATED_BODY()\n\npublic:\n ARotatingPickup();\n virtual void Tick(float DeltaSeconds) override;\n\nprotected:\n UPROPERTY(VisibleAnywhere)\n UStaticMeshComponent* Mesh;\n\n UPROPERTY(EditAnywhere, Category=\"Pickup\")\n float RotationSpeed = 90.0f;\n};\n```\n\n```cpp\nARotatingPickup::ARotatingPickup()\n{\n PrimaryActorTick.bCanEverTick = true;\n Mesh = CreateDefaultSubobject(TEXT(\"Mesh\"));\n RootComponent = Mesh;\n}\n\nvoid ARotatingPickup::Tick(float DeltaSeconds)\n{\n Super::Tick(DeltaSeconds);\n AddActorLocalRotation(FRotator(0.0f, RotationSpeed * DeltaSeconds, 0.0f));\n}\n```"} {"domain": "unreal", "instruction": "Kısa açıkla: UE C++ AddMovementInput örneği ver.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal Engine'de UPROPERTY ve UFUNCTION ne işe yarar?", "answer": "`UPROPERTY`, değişkeni Unreal reflection sistemine tanıtır. Böylece garbage collector, Blueprint, editor ve serialization sistemi değişkeni görebilir.\n\n`UFUNCTION`, C++ fonksiyonunu reflection sistemine açar. Blueprint'ten çağırmak veya event olarak kullanmak için gerekir.\n\n```cpp\nUPROPERTY(EditAnywhere, BlueprintReadWrite, Category=\"Stats\")\nfloat MaxHealth = 100.0f;\n\nUFUNCTION(BlueprintCallable, Category=\"Stats\")\nvoid TakeDamageAmount(float Amount);\n```\n\nUnreal'da UObject referanslarını çoğu zaman `UPROPERTY` ile tutmak önemlidir; aksi halde GC davranışı sorun çıkarabilir."} {"domain": "unity", "instruction": "Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: UE C++ UActorComponent tabanlı health component örneği ver.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de coin toplama sistemi C# ile nasıl yapılır?", "answer": "Coin objesinde trigger collider olmalı. Player objesini tag veya component ile ayırt edebilirsin.\n\n```csharp\nusing UnityEngine;\n\npublic class Coin : MonoBehaviour\n{\n [SerializeField] private int value = 1;\n\n private void OnTriggerEnter(Collider other)\n {\n if (!other.TryGetComponent(out var wallet))\n return;\n\n wallet.AddCoins(value);\n Destroy(gameObject);\n }\n}\n\npublic class PlayerWallet : MonoBehaviour\n{\n public int Coins { get; private set; }\n\n public void AddCoins(int amount)\n {\n Coins += amount;\n }\n}\n```"} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal C++ ile Actor içinde rotating pickup yaz.", "answer": "Pickup için `AActor` türetip mesh'i root'a bağlayabilir ve Tick içinde döndürebilirsin.\n\n```cpp\nUCLASS()\nclass ARotatingPickup : public AActor\n{\n GENERATED_BODY()\n\npublic:\n ARotatingPickup();\n virtual void Tick(float DeltaSeconds) override;\n\nprotected:\n UPROPERTY(VisibleAnywhere)\n UStaticMeshComponent* Mesh;\n\n UPROPERTY(EditAnywhere, Category=\"Pickup\")\n float RotationSpeed = 90.0f;\n};\n```\n\n```cpp\nARotatingPickup::ARotatingPickup()\n{\n PrimaryActorTick.bCanEverTick = true;\n Mesh = CreateDefaultSubobject(TEXT(\"Mesh\"));\n RootComponent = Mesh;\n}\n\nvoid ARotatingPickup::Tick(float DeltaSeconds)\n{\n Super::Tick(DeltaSeconds);\n AddActorLocalRotation(FRotator(0.0f, RotationSpeed * DeltaSeconds, 0.0f));\n}\n```"} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal C++ ile Actor içinde rotating pickup yaz.", "answer": "Pickup için `AActor` türetip mesh'i root'a bağlayabilir ve Tick içinde döndürebilirsin.\n\n```cpp\nUCLASS()\nclass ARotatingPickup : public AActor\n{\n GENERATED_BODY()\n\npublic:\n ARotatingPickup();\n virtual void Tick(float DeltaSeconds) override;\n\nprotected:\n UPROPERTY(VisibleAnywhere)\n UStaticMeshComponent* Mesh;\n\n UPROPERTY(EditAnywhere, Category=\"Pickup\")\n float RotationSpeed = 90.0f;\n};\n```\n\n```cpp\nARotatingPickup::ARotatingPickup()\n{\n PrimaryActorTick.bCanEverTick = true;\n Mesh = CreateDefaultSubobject(TEXT(\"Mesh\"));\n RootComponent = Mesh;\n}\n\nvoid ARotatingPickup::Tick(float DeltaSeconds)\n{\n Super::Tick(DeltaSeconds);\n AddActorLocalRotation(FRotator(0.0f, RotationSpeed * DeltaSeconds, 0.0f));\n}\n```"} {"domain": "unity", "instruction": "Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Unreal C++ derleme hatalarında nasıl debug yapılır?", "answer": "Önce derleyicinin verdiği ilk hataya bak. Unreal build çıktısında sonraki hatalar çoğu zaman ilk hatanın sonucudur.\n\nKontrol listesi:\n\n- Header dosyasında `GENERATED_BODY()` doğru yerde mi?\n- `.generated.h` include'u en son include mu?\n- Sınıf adı dosya ve constructor adıyla uyumlu mu?\n- Eksik module dependency var mı?\n- Pointer tipleri forward declaration ile yetiyor mu, yoksa include gerekli mi?\n\nReflection hatalarında Unreal Editor'ü kapatıp temiz build almak da gerekebilir."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal'da Character hareket kodunu temiz şekilde göster.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Unreal C++ ile Actor içinde rotating pickup yaz.", "answer": "Pickup için `AActor` türetip mesh'i root'a bağlayabilir ve Tick içinde döndürebilirsin.\n\n```cpp\nUCLASS()\nclass ARotatingPickup : public AActor\n{\n GENERATED_BODY()\n\npublic:\n ARotatingPickup();\n virtual void Tick(float DeltaSeconds) override;\n\nprotected:\n UPROPERTY(VisibleAnywhere)\n UStaticMeshComponent* Mesh;\n\n UPROPERTY(EditAnywhere, Category=\"Pickup\")\n float RotationSpeed = 90.0f;\n};\n```\n\n```cpp\nARotatingPickup::ARotatingPickup()\n{\n PrimaryActorTick.bCanEverTick = true;\n Mesh = CreateDefaultSubobject(TEXT(\"Mesh\"));\n RootComponent = Mesh;\n}\n\nvoid ARotatingPickup::Tick(float DeltaSeconds)\n{\n Super::Tick(DeltaSeconds);\n AddActorLocalRotation(FRotator(0.0f, RotationSpeed * DeltaSeconds, 0.0f));\n}\n```"} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Kod örneğiyle göster: UE C++ AddMovementInput örneği ver.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Unreal Engine'de can sistemi için UHealthComponent yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal C++ ile Actor içinde rotating pickup yaz.", "answer": "Pickup için `AActor` türetip mesh'i root'a bağlayabilir ve Tick içinde döndürebilirsin.\n\n```cpp\nUCLASS()\nclass ARotatingPickup : public AActor\n{\n GENERATED_BODY()\n\npublic:\n ARotatingPickup();\n virtual void Tick(float DeltaSeconds) override;\n\nprotected:\n UPROPERTY(VisibleAnywhere)\n UStaticMeshComponent* Mesh;\n\n UPROPERTY(EditAnywhere, Category=\"Pickup\")\n float RotationSpeed = 90.0f;\n};\n```\n\n```cpp\nARotatingPickup::ARotatingPickup()\n{\n PrimaryActorTick.bCanEverTick = true;\n Mesh = CreateDefaultSubobject(TEXT(\"Mesh\"));\n RootComponent = Mesh;\n}\n\nvoid ARotatingPickup::Tick(float DeltaSeconds)\n{\n Super::Tick(DeltaSeconds);\n AddActorLocalRotation(FRotator(0.0f, RotationSpeed * DeltaSeconds, 0.0f));\n}\n```"} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal C++ ile basit player movement yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de null reference exception nasıl debug edilir?", "answer": "`NullReferenceException`, null olan bir değişkenin alanına veya metoduna eriştiğini gösterir. Inspector referansı atanmış mı, `GetComponent` sonucu null mı ve obje sahnede aktif mi kontrol et.\n\n```csharp\n[SerializeField] private Transform target;\n\nprivate void Awake()\n{\n if (target == null)\n {\n Debug.LogError(\"Target referansı Inspector'dan atanmadı.\", this);\n enabled = false;\n return;\n }\n}\n```\n\nHata satırına çift tıkla, o satırdaki her referansı tek tek kontrol et."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal C++ derleme hatalarında nasıl debug yapılır?", "answer": "Önce derleyicinin verdiği ilk hataya bak. Unreal build çıktısında sonraki hatalar çoğu zaman ilk hatanın sonucudur.\n\nKontrol listesi:\n\n- Header dosyasında `GENERATED_BODY()` doğru yerde mi?\n- `.generated.h` include'u en son include mu?\n- Sınıf adı dosya ve constructor adıyla uyumlu mu?\n- Eksik module dependency var mı?\n- Pointer tipleri forward declaration ile yetiyor mu, yoksa include gerekli mi?\n\nReflection hatalarında Unreal Editor'ü kapatıp temiz build almak da gerekebilir."} {"domain": "unity", "instruction": "Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "MonoBehaviour içinde WASD movement nasıl yazılır?", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal C++ ile basit player movement yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de ScriptableObject ile item tanımı nasıl yapılır?", "answer": "ScriptableObject, item verisini prefab veya sahne bağımlılığı olmadan saklamak için uygundur.\n\n```csharp\nusing UnityEngine;\n\n[CreateAssetMenu(menuName = \"Game/Item\")]\npublic class ItemDefinition : ScriptableObject\n{\n public string id;\n public string displayName;\n public Sprite icon;\n public int maxStack = 1;\n}\n```\n\nProject penceresinde sağ tıklayıp `Create > Game > Item` ile asset oluşturabilirsin. Runtime state'i ScriptableObject üzerinde değil, inventory component içinde tutulmalıdır."} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Unreal C++ derleme hatalarında nasıl debug yapılır?", "answer": "Önce derleyicinin verdiği ilk hataya bak. Unreal build çıktısında sonraki hatalar çoğu zaman ilk hatanın sonucudur.\n\nKontrol listesi:\n\n- Header dosyasında `GENERATED_BODY()` doğru yerde mi?\n- `.generated.h` include'u en son include mu?\n- Sınıf adı dosya ve constructor adıyla uyumlu mu?\n- Eksik module dependency var mı?\n- Pointer tipleri forward declaration ile yetiyor mu, yoksa include gerekli mi?\n\nReflection hatalarında Unreal Editor'ü kapatıp temiz build almak da gerekebilir."} {"domain": "unity", "instruction": "Kısa açıkla: Unity 2D'de Rigidbody2D ile oyuncu hareketi yaz.", "answer": "Bu örnek top-down 2D hareket içindir. Player objesinde `Rigidbody2D` olmalı ve gravity scale genelde 0 yapılır.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(Rigidbody2D))]\npublic class PlayerMovement2D : MonoBehaviour\n{\n [SerializeField] private float speed = 6f;\n\n private Rigidbody2D rb;\n private Vector2 input;\n\n private void Awake()\n {\n rb = GetComponent();\n }\n\n private void Update()\n {\n input.x = Input.GetAxisRaw(\"Horizontal\");\n input.y = Input.GetAxisRaw(\"Vertical\");\n input = input.normalized;\n }\n\n private void FixedUpdate()\n {\n rb.linearVelocity = input * speed;\n }\n}\n```\n\nEski Unity sürümlerinde `linearVelocity` yerine `velocity` kullanılır."} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal'da Character hareket kodunu temiz şekilde göster.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal Engine Character class içinde hareket input'u bağla.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Unity'de null reference exception nasıl debug edilir?", "answer": "`NullReferenceException`, null olan bir değişkenin alanına veya metoduna eriştiğini gösterir. Inspector referansı atanmış mı, `GetComponent` sonucu null mı ve obje sahnede aktif mi kontrol et.\n\n```csharp\n[SerializeField] private Transform target;\n\nprivate void Awake()\n{\n if (target == null)\n {\n Debug.LogError(\"Target referansı Inspector'dan atanmadı.\", this);\n enabled = false;\n return;\n }\n}\n```\n\nHata satırına çift tıkla, o satırdaki her referansı tek tek kontrol et."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal Engine'de UPROPERTY ve UFUNCTION ne işe yarar?", "answer": "`UPROPERTY`, değişkeni Unreal reflection sistemine tanıtır. Böylece garbage collector, Blueprint, editor ve serialization sistemi değişkeni görebilir.\n\n`UFUNCTION`, C++ fonksiyonunu reflection sistemine açar. Blueprint'ten çağırmak veya event olarak kullanmak için gerekir.\n\n```cpp\nUPROPERTY(EditAnywhere, BlueprintReadWrite, Category=\"Stats\")\nfloat MaxHealth = 100.0f;\n\nUFUNCTION(BlueprintCallable, Category=\"Stats\")\nvoid TakeDamageAmount(float Amount);\n```\n\nUnreal'da UObject referanslarını çoğu zaman `UPROPERTY` ile tutmak önemlidir; aksi halde GC davranışı sorun çıkarabilir."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Unity'de coin toplama sistemi C# ile nasıl yapılır?", "answer": "Coin objesinde trigger collider olmalı. Player objesini tag veya component ile ayırt edebilirsin.\n\n```csharp\nusing UnityEngine;\n\npublic class Coin : MonoBehaviour\n{\n [SerializeField] private int value = 1;\n\n private void OnTriggerEnter(Collider other)\n {\n if (!other.TryGetComponent(out var wallet))\n return;\n\n wallet.AddCoins(value);\n Destroy(gameObject);\n }\n}\n\npublic class PlayerWallet : MonoBehaviour\n{\n public int Coins { get; private set; }\n\n public void AddCoins(int amount)\n {\n Coins += amount;\n }\n}\n```"} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de ScriptableObject ile item tanımı nasıl yapılır?", "answer": "ScriptableObject, item verisini prefab veya sahne bağımlılığı olmadan saklamak için uygundur.\n\n```csharp\nusing UnityEngine;\n\n[CreateAssetMenu(menuName = \"Game/Item\")]\npublic class ItemDefinition : ScriptableObject\n{\n public string id;\n public string displayName;\n public Sprite icon;\n public int maxStack = 1;\n}\n```\n\nProject penceresinde sağ tıklayıp `Create > Game > Item` ile asset oluşturabilirsin. Runtime state'i ScriptableObject üzerinde değil, inventory component içinde tutulmalıdır."} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal Engine Character class içinde hareket input'u bağla.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal Blueprint ile kapı açma mantığını anlat.", "answer": "Kapı actor'ünde `Box Collision`, kapı mesh'i ve timeline bulunur. Player overlap olduğunda timeline çalışır, timeline değeriyle kapının rotation veya location değeri interpolate edilir.\n\nAkış:\n\n- `OnComponentBeginOverlap` tetiklenir.\n- Overlap eden actor player mı kontrol edilir.\n- Timeline `Play` çağrılır.\n- Timeline update pin'inde `SetRelativeRotation` veya `SetRelativeLocation` kullanılır.\n- Çıkışta `OnComponentEndOverlap` ile timeline reverse yapılabilir.\n\nC++ gerekiyorsa aynı mantık `UBoxComponent` ve `FTimeline` ile kurulabilir."} {"domain": "unity", "instruction": "Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal Engine'de UPROPERTY ve UFUNCTION ne işe yarar?", "answer": "`UPROPERTY`, değişkeni Unreal reflection sistemine tanıtır. Böylece garbage collector, Blueprint, editor ve serialization sistemi değişkeni görebilir.\n\n`UFUNCTION`, C++ fonksiyonunu reflection sistemine açar. Blueprint'ten çağırmak veya event olarak kullanmak için gerekir.\n\n```cpp\nUPROPERTY(EditAnywhere, BlueprintReadWrite, Category=\"Stats\")\nfloat MaxHealth = 100.0f;\n\nUFUNCTION(BlueprintCallable, Category=\"Stats\")\nvoid TakeDamageAmount(float Amount);\n```\n\nUnreal'da UObject referanslarını çoğu zaman `UPROPERTY` ile tutmak önemlidir; aksi halde GC davranışı sorun çıkarabilir."} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de null reference exception nasıl debug edilir?", "answer": "`NullReferenceException`, null olan bir değişkenin alanına veya metoduna eriştiğini gösterir. Inspector referansı atanmış mı, `GetComponent` sonucu null mı ve obje sahnede aktif mi kontrol et.\n\n```csharp\n[SerializeField] private Transform target;\n\nprivate void Awake()\n{\n if (target == null)\n {\n Debug.LogError(\"Target referansı Inspector'dan atanmadı.\", this);\n enabled = false;\n return;\n }\n}\n```\n\nHata satırına çift tıkla, o satırdaki her referansı tek tek kontrol et."} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de oyuncu hareket kodunu temiz şekilde göster.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal Engine'de UPROPERTY ve UFUNCTION ne işe yarar?", "answer": "`UPROPERTY`, değişkeni Unreal reflection sistemine tanıtır. Böylece garbage collector, Blueprint, editor ve serialization sistemi değişkeni görebilir.\n\n`UFUNCTION`, C++ fonksiyonunu reflection sistemine açar. Blueprint'ten çağırmak veya event olarak kullanmak için gerekir.\n\n```cpp\nUPROPERTY(EditAnywhere, BlueprintReadWrite, Category=\"Stats\")\nfloat MaxHealth = 100.0f;\n\nUFUNCTION(BlueprintCallable, Category=\"Stats\")\nvoid TakeDamageAmount(float Amount);\n```\n\nUnreal'da UObject referanslarını çoğu zaman `UPROPERTY` ile tutmak önemlidir; aksi halde GC davranışı sorun çıkarabilir."} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity 2D'de Rigidbody2D ile oyuncu hareketi yaz.", "answer": "Bu örnek top-down 2D hareket içindir. Player objesinde `Rigidbody2D` olmalı ve gravity scale genelde 0 yapılır.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(Rigidbody2D))]\npublic class PlayerMovement2D : MonoBehaviour\n{\n [SerializeField] private float speed = 6f;\n\n private Rigidbody2D rb;\n private Vector2 input;\n\n private void Awake()\n {\n rb = GetComponent();\n }\n\n private void Update()\n {\n input.x = Input.GetAxisRaw(\"Horizontal\");\n input.y = Input.GetAxisRaw(\"Vertical\");\n input = input.normalized;\n }\n\n private void FixedUpdate()\n {\n rb.linearVelocity = input * speed;\n }\n}\n```\n\nEski Unity sürümlerinde `linearVelocity` yerine `velocity` kullanılır."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal C++ ile basit player movement yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: UE C++ UActorComponent tabanlı health component örneği ver.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Kısa açıkla: MonoBehaviour içinde WASD movement nasıl yazılır?", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de ScriptableObject ile item tanımı nasıl yapılır?", "answer": "ScriptableObject, item verisini prefab veya sahne bağımlılığı olmadan saklamak için uygundur.\n\n```csharp\nusing UnityEngine;\n\n[CreateAssetMenu(menuName = \"Game/Item\")]\npublic class ItemDefinition : ScriptableObject\n{\n public string id;\n public string displayName;\n public Sprite icon;\n public int maxStack = 1;\n}\n```\n\nProject penceresinde sağ tıklayıp `Create > Game > Item` ile asset oluşturabilirsin. Runtime state'i ScriptableObject üzerinde değil, inventory component içinde tutulmalıdır."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal C++ ile basit player movement yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal C++ ile basit player movement yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Unreal Engine Character class içinde hareket input'u bağla.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity 2D'de Rigidbody2D ile oyuncu hareketi yaz.", "answer": "Bu örnek top-down 2D hareket içindir. Player objesinde `Rigidbody2D` olmalı ve gravity scale genelde 0 yapılır.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(Rigidbody2D))]\npublic class PlayerMovement2D : MonoBehaviour\n{\n [SerializeField] private float speed = 6f;\n\n private Rigidbody2D rb;\n private Vector2 input;\n\n private void Awake()\n {\n rb = GetComponent();\n }\n\n private void Update()\n {\n input.x = Input.GetAxisRaw(\"Horizontal\");\n input.y = Input.GetAxisRaw(\"Vertical\");\n input = input.normalized;\n }\n\n private void FixedUpdate()\n {\n rb.linearVelocity = input * speed;\n }\n}\n```\n\nEski Unity sürümlerinde `linearVelocity` yerine `velocity` kullanılır."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal Engine Character class içinde hareket input'u bağla.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de null reference exception nasıl debug edilir?", "answer": "`NullReferenceException`, null olan bir değişkenin alanına veya metoduna eriştiğini gösterir. Inspector referansı atanmış mı, `GetComponent` sonucu null mı ve obje sahnede aktif mi kontrol et.\n\n```csharp\n[SerializeField] private Transform target;\n\nprivate void Awake()\n{\n if (target == null)\n {\n Debug.LogError(\"Target referansı Inspector'dan atanmadı.\", this);\n enabled = false;\n return;\n }\n}\n```\n\nHata satırına çift tıkla, o satırdaki her referansı tek tek kontrol et."} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity C# ile karakter hareketi örneği ver.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de oyuncu hareket kodunu temiz şekilde göster.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal C++ ile basit player movement yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal Engine Character class içinde hareket input'u bağla.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal'da BlueprintCallable TakeDamage fonksiyonu olan health component oluştur.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Unity 2D'de Rigidbody2D ile oyuncu hareketi yaz.", "answer": "Bu örnek top-down 2D hareket içindir. Player objesinde `Rigidbody2D` olmalı ve gravity scale genelde 0 yapılır.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(Rigidbody2D))]\npublic class PlayerMovement2D : MonoBehaviour\n{\n [SerializeField] private float speed = 6f;\n\n private Rigidbody2D rb;\n private Vector2 input;\n\n private void Awake()\n {\n rb = GetComponent();\n }\n\n private void Update()\n {\n input.x = Input.GetAxisRaw(\"Horizontal\");\n input.y = Input.GetAxisRaw(\"Vertical\");\n input = input.normalized;\n }\n\n private void FixedUpdate()\n {\n rb.linearVelocity = input * speed;\n }\n}\n```\n\nEski Unity sürümlerinde `linearVelocity` yerine `velocity` kullanılır."} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: UE C++ AddMovementInput örneği ver.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Kısa açıkla: UE C++ UActorComponent tabanlı health component örneği ver.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Unity için basit player movement yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de null reference exception nasıl debug edilir?", "answer": "`NullReferenceException`, null olan bir değişkenin alanına veya metoduna eriştiğini gösterir. Inspector referansı atanmış mı, `GetComponent` sonucu null mı ve obje sahnede aktif mi kontrol et.\n\n```csharp\n[SerializeField] private Transform target;\n\nprivate void Awake()\n{\n if (target == null)\n {\n Debug.LogError(\"Target referansı Inspector'dan atanmadı.\", this);\n enabled = false;\n return;\n }\n}\n```\n\nHata satırına çift tıkla, o satırdaki her referansı tek tek kontrol et."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity C# ile karakter hareketi örneği ver.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal Blueprint ile kapı açma mantığını anlat.", "answer": "Kapı actor'ünde `Box Collision`, kapı mesh'i ve timeline bulunur. Player overlap olduğunda timeline çalışır, timeline değeriyle kapının rotation veya location değeri interpolate edilir.\n\nAkış:\n\n- `OnComponentBeginOverlap` tetiklenir.\n- Overlap eden actor player mı kontrol edilir.\n- Timeline `Play` çağrılır.\n- Timeline update pin'inde `SetRelativeRotation` veya `SetRelativeLocation` kullanılır.\n- Çıkışta `OnComponentEndOverlap` ile timeline reverse yapılabilir.\n\nC++ gerekiyorsa aynı mantık `UBoxComponent` ve `FTimeline` ile kurulabilir."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity için basit player movement yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal Engine'de can sistemi için UHealthComponent yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de coin toplama sistemi C# ile nasıl yapılır?", "answer": "Coin objesinde trigger collider olmalı. Player objesini tag veya component ile ayırt edebilirsin.\n\n```csharp\nusing UnityEngine;\n\npublic class Coin : MonoBehaviour\n{\n [SerializeField] private int value = 1;\n\n private void OnTriggerEnter(Collider other)\n {\n if (!other.TryGetComponent(out var wallet))\n return;\n\n wallet.AddCoins(value);\n Destroy(gameObject);\n }\n}\n\npublic class PlayerWallet : MonoBehaviour\n{\n public int Coins { get; private set; }\n\n public void AddCoins(int amount)\n {\n Coins += amount;\n }\n}\n```"} {"domain": "unreal", "instruction": "Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de null reference exception nasıl debug edilir?", "answer": "`NullReferenceException`, null olan bir değişkenin alanına veya metoduna eriştiğini gösterir. Inspector referansı atanmış mı, `GetComponent` sonucu null mı ve obje sahnede aktif mi kontrol et.\n\n```csharp\n[SerializeField] private Transform target;\n\nprivate void Awake()\n{\n if (target == null)\n {\n Debug.LogError(\"Target referansı Inspector'dan atanmadı.\", this);\n enabled = false;\n return;\n }\n}\n```\n\nHata satırına çift tıkla, o satırdaki her referansı tek tek kontrol et."} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "UE C++ UActorComponent tabanlı health component örneği ver.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal Blueprint ile kapı açma mantığını anlat.", "answer": "Kapı actor'ünde `Box Collision`, kapı mesh'i ve timeline bulunur. Player overlap olduğunda timeline çalışır, timeline değeriyle kapının rotation veya location değeri interpolate edilir.\n\nAkış:\n\n- `OnComponentBeginOverlap` tetiklenir.\n- Overlap eden actor player mı kontrol edilir.\n- Timeline `Play` çağrılır.\n- Timeline update pin'inde `SetRelativeRotation` veya `SetRelativeLocation` kullanılır.\n- Çıkışta `OnComponentEndOverlap` ile timeline reverse yapılabilir.\n\nC++ gerekiyorsa aynı mantık `UBoxComponent` ve `FTimeline` ile kurulabilir."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal Blueprint ile kapı açma mantığını anlat.", "answer": "Kapı actor'ünde `Box Collision`, kapı mesh'i ve timeline bulunur. Player overlap olduğunda timeline çalışır, timeline değeriyle kapının rotation veya location değeri interpolate edilir.\n\nAkış:\n\n- `OnComponentBeginOverlap` tetiklenir.\n- Overlap eden actor player mı kontrol edilir.\n- Timeline `Play` çağrılır.\n- Timeline update pin'inde `SetRelativeRotation` veya `SetRelativeLocation` kullanılır.\n- Çıkışta `OnComponentEndOverlap` ile timeline reverse yapılabilir.\n\nC++ gerekiyorsa aynı mantık `UBoxComponent` ve `FTimeline` ile kurulabilir."} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity için basit player movement yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal C++ ile basit player movement yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de ScriptableObject ile item tanımı nasıl yapılır?", "answer": "ScriptableObject, item verisini prefab veya sahne bağımlılığı olmadan saklamak için uygundur.\n\n```csharp\nusing UnityEngine;\n\n[CreateAssetMenu(menuName = \"Game/Item\")]\npublic class ItemDefinition : ScriptableObject\n{\n public string id;\n public string displayName;\n public Sprite icon;\n public int maxStack = 1;\n}\n```\n\nProject penceresinde sağ tıklayıp `Create > Game > Item` ile asset oluşturabilirsin. Runtime state'i ScriptableObject üzerinde değil, inventory component içinde tutulmalıdır."} {"domain": "unreal", "instruction": "Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de null reference exception nasıl debug edilir?", "answer": "`NullReferenceException`, null olan bir değişkenin alanına veya metoduna eriştiğini gösterir. Inspector referansı atanmış mı, `GetComponent` sonucu null mı ve obje sahnede aktif mi kontrol et.\n\n```csharp\n[SerializeField] private Transform target;\n\nprivate void Awake()\n{\n if (target == null)\n {\n Debug.LogError(\"Target referansı Inspector'dan atanmadı.\", this);\n enabled = false;\n return;\n }\n}\n```\n\nHata satırına çift tıkla, o satırdaki her referansı tek tek kontrol et."} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: UE C++ UActorComponent tabanlı health component örneği ver.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Kısa açıkla: UE C++ AddMovementInput örneği ver.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal'da BlueprintCallable TakeDamage fonksiyonu olan health component oluştur.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal Engine Character class içinde hareket input'u bağla.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de ScriptableObject ile item tanımı nasıl yapılır?", "answer": "ScriptableObject, item verisini prefab veya sahne bağımlılığı olmadan saklamak için uygundur.\n\n```csharp\nusing UnityEngine;\n\n[CreateAssetMenu(menuName = \"Game/Item\")]\npublic class ItemDefinition : ScriptableObject\n{\n public string id;\n public string displayName;\n public Sprite icon;\n public int maxStack = 1;\n}\n```\n\nProject penceresinde sağ tıklayıp `Create > Game > Item` ile asset oluşturabilirsin. Runtime state'i ScriptableObject üzerinde değil, inventory component içinde tutulmalıdır."} {"domain": "unreal", "instruction": "UE C++ UActorComponent tabanlı health component örneği ver.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal Engine'de can sistemi için UHealthComponent yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal C++ ile Actor içinde rotating pickup yaz.", "answer": "Pickup için `AActor` türetip mesh'i root'a bağlayabilir ve Tick içinde döndürebilirsin.\n\n```cpp\nUCLASS()\nclass ARotatingPickup : public AActor\n{\n GENERATED_BODY()\n\npublic:\n ARotatingPickup();\n virtual void Tick(float DeltaSeconds) override;\n\nprotected:\n UPROPERTY(VisibleAnywhere)\n UStaticMeshComponent* Mesh;\n\n UPROPERTY(EditAnywhere, Category=\"Pickup\")\n float RotationSpeed = 90.0f;\n};\n```\n\n```cpp\nARotatingPickup::ARotatingPickup()\n{\n PrimaryActorTick.bCanEverTick = true;\n Mesh = CreateDefaultSubobject(TEXT(\"Mesh\"));\n RootComponent = Mesh;\n}\n\nvoid ARotatingPickup::Tick(float DeltaSeconds)\n{\n Super::Tick(DeltaSeconds);\n AddActorLocalRotation(FRotator(0.0f, RotationSpeed * DeltaSeconds, 0.0f));\n}\n```"} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: UE C++ UActorComponent tabanlı health component örneği ver.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity C# ile karakter hareketi örneği ver.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal'da Character hareket kodunu temiz şekilde göster.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Unity'de ScriptableObject ile item tanımı nasıl yapılır?", "answer": "ScriptableObject, item verisini prefab veya sahne bağımlılığı olmadan saklamak için uygundur.\n\n```csharp\nusing UnityEngine;\n\n[CreateAssetMenu(menuName = \"Game/Item\")]\npublic class ItemDefinition : ScriptableObject\n{\n public string id;\n public string displayName;\n public Sprite icon;\n public int maxStack = 1;\n}\n```\n\nProject penceresinde sağ tıklayıp `Create > Game > Item` ile asset oluşturabilirsin. Runtime state'i ScriptableObject üzerinde değil, inventory component içinde tutulmalıdır."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal'da Character hareket kodunu temiz şekilde göster.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal Blueprint ile kapı açma mantığını anlat.", "answer": "Kapı actor'ünde `Box Collision`, kapı mesh'i ve timeline bulunur. Player overlap olduğunda timeline çalışır, timeline değeriyle kapının rotation veya location değeri interpolate edilir.\n\nAkış:\n\n- `OnComponentBeginOverlap` tetiklenir.\n- Overlap eden actor player mı kontrol edilir.\n- Timeline `Play` çağrılır.\n- Timeline update pin'inde `SetRelativeRotation` veya `SetRelativeLocation` kullanılır.\n- Çıkışta `OnComponentEndOverlap` ile timeline reverse yapılabilir.\n\nC++ gerekiyorsa aynı mantık `UBoxComponent` ve `FTimeline` ile kurulabilir."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de coin toplama sistemi C# ile nasıl yapılır?", "answer": "Coin objesinde trigger collider olmalı. Player objesini tag veya component ile ayırt edebilirsin.\n\n```csharp\nusing UnityEngine;\n\npublic class Coin : MonoBehaviour\n{\n [SerializeField] private int value = 1;\n\n private void OnTriggerEnter(Collider other)\n {\n if (!other.TryGetComponent(out var wallet))\n return;\n\n wallet.AddCoins(value);\n Destroy(gameObject);\n }\n}\n\npublic class PlayerWallet : MonoBehaviour\n{\n public int Coins { get; private set; }\n\n public void AddCoins(int amount)\n {\n Coins += amount;\n }\n}\n```"} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal C++ derleme hatalarında nasıl debug yapılır?", "answer": "Önce derleyicinin verdiği ilk hataya bak. Unreal build çıktısında sonraki hatalar çoğu zaman ilk hatanın sonucudur.\n\nKontrol listesi:\n\n- Header dosyasında `GENERATED_BODY()` doğru yerde mi?\n- `.generated.h` include'u en son include mu?\n- Sınıf adı dosya ve constructor adıyla uyumlu mu?\n- Eksik module dependency var mı?\n- Pointer tipleri forward declaration ile yetiyor mu, yoksa include gerekli mi?\n\nReflection hatalarında Unreal Editor'ü kapatıp temiz build almak da gerekebilir."} {"domain": "unity", "instruction": "Kısa açıkla: Unity 2D'de Rigidbody2D ile oyuncu hareketi yaz.", "answer": "Bu örnek top-down 2D hareket içindir. Player objesinde `Rigidbody2D` olmalı ve gravity scale genelde 0 yapılır.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(Rigidbody2D))]\npublic class PlayerMovement2D : MonoBehaviour\n{\n [SerializeField] private float speed = 6f;\n\n private Rigidbody2D rb;\n private Vector2 input;\n\n private void Awake()\n {\n rb = GetComponent();\n }\n\n private void Update()\n {\n input.x = Input.GetAxisRaw(\"Horizontal\");\n input.y = Input.GetAxisRaw(\"Vertical\");\n input = input.normalized;\n }\n\n private void FixedUpdate()\n {\n rb.linearVelocity = input * speed;\n }\n}\n```\n\nEski Unity sürümlerinde `linearVelocity` yerine `velocity` kullanılır."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal C++ ile basit player movement yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "En temiz mimariyle öner: UE C++ UActorComponent tabanlı health component örneği ver.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de oyuncu hareket kodunu temiz şekilde göster.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de coin toplama sistemi C# ile nasıl yapılır?", "answer": "Coin objesinde trigger collider olmalı. Player objesini tag veya component ile ayırt edebilirsin.\n\n```csharp\nusing UnityEngine;\n\npublic class Coin : MonoBehaviour\n{\n [SerializeField] private int value = 1;\n\n private void OnTriggerEnter(Collider other)\n {\n if (!other.TryGetComponent(out var wallet))\n return;\n\n wallet.AddCoins(value);\n Destroy(gameObject);\n }\n}\n\npublic class PlayerWallet : MonoBehaviour\n{\n public int Coins { get; private set; }\n\n public void AddCoins(int amount)\n {\n Coins += amount;\n }\n}\n```"} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal C++ ile basit player movement yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de coin toplama sistemi C# ile nasıl yapılır?", "answer": "Coin objesinde trigger collider olmalı. Player objesini tag veya component ile ayırt edebilirsin.\n\n```csharp\nusing UnityEngine;\n\npublic class Coin : MonoBehaviour\n{\n [SerializeField] private int value = 1;\n\n private void OnTriggerEnter(Collider other)\n {\n if (!other.TryGetComponent(out var wallet))\n return;\n\n wallet.AddCoins(value);\n Destroy(gameObject);\n }\n}\n\npublic class PlayerWallet : MonoBehaviour\n{\n public int Coins { get; private set; }\n\n public void AddCoins(int amount)\n {\n Coins += amount;\n }\n}\n```"} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de coin toplama sistemi C# ile nasıl yapılır?", "answer": "Coin objesinde trigger collider olmalı. Player objesini tag veya component ile ayırt edebilirsin.\n\n```csharp\nusing UnityEngine;\n\npublic class Coin : MonoBehaviour\n{\n [SerializeField] private int value = 1;\n\n private void OnTriggerEnter(Collider other)\n {\n if (!other.TryGetComponent(out var wallet))\n return;\n\n wallet.AddCoins(value);\n Destroy(gameObject);\n }\n}\n\npublic class PlayerWallet : MonoBehaviour\n{\n public int Coins { get; private set; }\n\n public void AddCoins(int amount)\n {\n Coins += amount;\n }\n}\n```"} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Unity'de coin toplama sistemi C# ile nasıl yapılır?", "answer": "Coin objesinde trigger collider olmalı. Player objesini tag veya component ile ayırt edebilirsin.\n\n```csharp\nusing UnityEngine;\n\npublic class Coin : MonoBehaviour\n{\n [SerializeField] private int value = 1;\n\n private void OnTriggerEnter(Collider other)\n {\n if (!other.TryGetComponent(out var wallet))\n return;\n\n wallet.AddCoins(value);\n Destroy(gameObject);\n }\n}\n\npublic class PlayerWallet : MonoBehaviour\n{\n public int Coins { get; private set; }\n\n public void AddCoins(int amount)\n {\n Coins += amount;\n }\n}\n```"} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal Engine'de can sistemi için UHealthComponent yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de ScriptableObject ile item tanımı nasıl yapılır?", "answer": "ScriptableObject, item verisini prefab veya sahne bağımlılığı olmadan saklamak için uygundur.\n\n```csharp\nusing UnityEngine;\n\n[CreateAssetMenu(menuName = \"Game/Item\")]\npublic class ItemDefinition : ScriptableObject\n{\n public string id;\n public string displayName;\n public Sprite icon;\n public int maxStack = 1;\n}\n```\n\nProject penceresinde sağ tıklayıp `Create > Game > Item` ile asset oluşturabilirsin. Runtime state'i ScriptableObject üzerinde değil, inventory component içinde tutulmalıdır."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Unity 2D'de Rigidbody2D ile oyuncu hareketi yaz.", "answer": "Bu örnek top-down 2D hareket içindir. Player objesinde `Rigidbody2D` olmalı ve gravity scale genelde 0 yapılır.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(Rigidbody2D))]\npublic class PlayerMovement2D : MonoBehaviour\n{\n [SerializeField] private float speed = 6f;\n\n private Rigidbody2D rb;\n private Vector2 input;\n\n private void Awake()\n {\n rb = GetComponent();\n }\n\n private void Update()\n {\n input.x = Input.GetAxisRaw(\"Horizontal\");\n input.y = Input.GetAxisRaw(\"Vertical\");\n input = input.normalized;\n }\n\n private void FixedUpdate()\n {\n rb.linearVelocity = input * speed;\n }\n}\n```\n\nEski Unity sürümlerinde `linearVelocity` yerine `velocity` kullanılır."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity C# ile karakter hareketi örneği ver.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal Engine'de can sistemi için UHealthComponent yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity C# ile karakter hareketi örneği ver.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Kısa açıkla: MonoBehaviour içinde WASD movement nasıl yazılır?", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal'da Character hareket kodunu temiz şekilde göster.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de coin toplama sistemi C# ile nasıl yapılır?", "answer": "Coin objesinde trigger collider olmalı. Player objesini tag veya component ile ayırt edebilirsin.\n\n```csharp\nusing UnityEngine;\n\npublic class Coin : MonoBehaviour\n{\n [SerializeField] private int value = 1;\n\n private void OnTriggerEnter(Collider other)\n {\n if (!other.TryGetComponent(out var wallet))\n return;\n\n wallet.AddCoins(value);\n Destroy(gameObject);\n }\n}\n\npublic class PlayerWallet : MonoBehaviour\n{\n public int Coins { get; private set; }\n\n public void AddCoins(int amount)\n {\n Coins += amount;\n }\n}\n```"} {"domain": "unity", "instruction": "Unity C# ile karakter hareketi örneği ver.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal C++ ile Actor içinde rotating pickup yaz.", "answer": "Pickup için `AActor` türetip mesh'i root'a bağlayabilir ve Tick içinde döndürebilirsin.\n\n```cpp\nUCLASS()\nclass ARotatingPickup : public AActor\n{\n GENERATED_BODY()\n\npublic:\n ARotatingPickup();\n virtual void Tick(float DeltaSeconds) override;\n\nprotected:\n UPROPERTY(VisibleAnywhere)\n UStaticMeshComponent* Mesh;\n\n UPROPERTY(EditAnywhere, Category=\"Pickup\")\n float RotationSpeed = 90.0f;\n};\n```\n\n```cpp\nARotatingPickup::ARotatingPickup()\n{\n PrimaryActorTick.bCanEverTick = true;\n Mesh = CreateDefaultSubobject(TEXT(\"Mesh\"));\n RootComponent = Mesh;\n}\n\nvoid ARotatingPickup::Tick(float DeltaSeconds)\n{\n Super::Tick(DeltaSeconds);\n AddActorLocalRotation(FRotator(0.0f, RotationSpeed * DeltaSeconds, 0.0f));\n}\n```"} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity için basit player movement yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "En temiz mimariyle öner: UE C++ UActorComponent tabanlı health component örneği ver.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal Engine Character class içinde hareket input'u bağla.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal'da Character hareket kodunu temiz şekilde göster.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Unity'de null reference exception nasıl debug edilir?", "answer": "`NullReferenceException`, null olan bir değişkenin alanına veya metoduna eriştiğini gösterir. Inspector referansı atanmış mı, `GetComponent` sonucu null mı ve obje sahnede aktif mi kontrol et.\n\n```csharp\n[SerializeField] private Transform target;\n\nprivate void Awake()\n{\n if (target == null)\n {\n Debug.LogError(\"Target referansı Inspector'dan atanmadı.\", this);\n enabled = false;\n return;\n }\n}\n```\n\nHata satırına çift tıkla, o satırdaki her referansı tek tek kontrol et."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: UE C++ AddMovementInput örneği ver.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity 2D'de Rigidbody2D ile oyuncu hareketi yaz.", "answer": "Bu örnek top-down 2D hareket içindir. Player objesinde `Rigidbody2D` olmalı ve gravity scale genelde 0 yapılır.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(Rigidbody2D))]\npublic class PlayerMovement2D : MonoBehaviour\n{\n [SerializeField] private float speed = 6f;\n\n private Rigidbody2D rb;\n private Vector2 input;\n\n private void Awake()\n {\n rb = GetComponent();\n }\n\n private void Update()\n {\n input.x = Input.GetAxisRaw(\"Horizontal\");\n input.y = Input.GetAxisRaw(\"Vertical\");\n input = input.normalized;\n }\n\n private void FixedUpdate()\n {\n rb.linearVelocity = input * speed;\n }\n}\n```\n\nEski Unity sürümlerinde `linearVelocity` yerine `velocity` kullanılır."} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: UE C++ UActorComponent tabanlı health component örneği ver.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal Engine'de UPROPERTY ve UFUNCTION ne işe yarar?", "answer": "`UPROPERTY`, değişkeni Unreal reflection sistemine tanıtır. Böylece garbage collector, Blueprint, editor ve serialization sistemi değişkeni görebilir.\n\n`UFUNCTION`, C++ fonksiyonunu reflection sistemine açar. Blueprint'ten çağırmak veya event olarak kullanmak için gerekir.\n\n```cpp\nUPROPERTY(EditAnywhere, BlueprintReadWrite, Category=\"Stats\")\nfloat MaxHealth = 100.0f;\n\nUFUNCTION(BlueprintCallable, Category=\"Stats\")\nvoid TakeDamageAmount(float Amount);\n```\n\nUnreal'da UObject referanslarını çoğu zaman `UPROPERTY` ile tutmak önemlidir; aksi halde GC davranışı sorun çıkarabilir."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal Engine'de can sistemi için UHealthComponent yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal C++ ile Actor içinde rotating pickup yaz.", "answer": "Pickup için `AActor` türetip mesh'i root'a bağlayabilir ve Tick içinde döndürebilirsin.\n\n```cpp\nUCLASS()\nclass ARotatingPickup : public AActor\n{\n GENERATED_BODY()\n\npublic:\n ARotatingPickup();\n virtual void Tick(float DeltaSeconds) override;\n\nprotected:\n UPROPERTY(VisibleAnywhere)\n UStaticMeshComponent* Mesh;\n\n UPROPERTY(EditAnywhere, Category=\"Pickup\")\n float RotationSpeed = 90.0f;\n};\n```\n\n```cpp\nARotatingPickup::ARotatingPickup()\n{\n PrimaryActorTick.bCanEverTick = true;\n Mesh = CreateDefaultSubobject(TEXT(\"Mesh\"));\n RootComponent = Mesh;\n}\n\nvoid ARotatingPickup::Tick(float DeltaSeconds)\n{\n Super::Tick(DeltaSeconds);\n AddActorLocalRotation(FRotator(0.0f, RotationSpeed * DeltaSeconds, 0.0f));\n}\n```"} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal C++ derleme hatalarında nasıl debug yapılır?", "answer": "Önce derleyicinin verdiği ilk hataya bak. Unreal build çıktısında sonraki hatalar çoğu zaman ilk hatanın sonucudur.\n\nKontrol listesi:\n\n- Header dosyasında `GENERATED_BODY()` doğru yerde mi?\n- `.generated.h` include'u en son include mu?\n- Sınıf adı dosya ve constructor adıyla uyumlu mu?\n- Eksik module dependency var mı?\n- Pointer tipleri forward declaration ile yetiyor mu, yoksa include gerekli mi?\n\nReflection hatalarında Unreal Editor'ü kapatıp temiz build almak da gerekebilir."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal C++ derleme hatalarında nasıl debug yapılır?", "answer": "Önce derleyicinin verdiği ilk hataya bak. Unreal build çıktısında sonraki hatalar çoğu zaman ilk hatanın sonucudur.\n\nKontrol listesi:\n\n- Header dosyasında `GENERATED_BODY()` doğru yerde mi?\n- `.generated.h` include'u en son include mu?\n- Sınıf adı dosya ve constructor adıyla uyumlu mu?\n- Eksik module dependency var mı?\n- Pointer tipleri forward declaration ile yetiyor mu, yoksa include gerekli mi?\n\nReflection hatalarında Unreal Editor'ü kapatıp temiz build almak da gerekebilir."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de ScriptableObject ile item tanımı nasıl yapılır?", "answer": "ScriptableObject, item verisini prefab veya sahne bağımlılığı olmadan saklamak için uygundur.\n\n```csharp\nusing UnityEngine;\n\n[CreateAssetMenu(menuName = \"Game/Item\")]\npublic class ItemDefinition : ScriptableObject\n{\n public string id;\n public string displayName;\n public Sprite icon;\n public int maxStack = 1;\n}\n```\n\nProject penceresinde sağ tıklayıp `Create > Game > Item` ile asset oluşturabilirsin. Runtime state'i ScriptableObject üzerinde değil, inventory component içinde tutulmalıdır."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: UE C++ AddMovementInput örneği ver.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal Engine'de can sistemi için UHealthComponent yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de oyuncu hareket kodunu temiz şekilde göster.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Unity'de oyuncu hareket kodunu temiz şekilde göster.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Unity'de null reference exception nasıl debug edilir?", "answer": "`NullReferenceException`, null olan bir değişkenin alanına veya metoduna eriştiğini gösterir. Inspector referansı atanmış mı, `GetComponent` sonucu null mı ve obje sahnede aktif mi kontrol et.\n\n```csharp\n[SerializeField] private Transform target;\n\nprivate void Awake()\n{\n if (target == null)\n {\n Debug.LogError(\"Target referansı Inspector'dan atanmadı.\", this);\n enabled = false;\n return;\n }\n}\n```\n\nHata satırına çift tıkla, o satırdaki her referansı tek tek kontrol et."} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: MonoBehaviour içinde WASD movement nasıl yazılır?", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal Blueprint ile kapı açma mantığını anlat.", "answer": "Kapı actor'ünde `Box Collision`, kapı mesh'i ve timeline bulunur. Player overlap olduğunda timeline çalışır, timeline değeriyle kapının rotation veya location değeri interpolate edilir.\n\nAkış:\n\n- `OnComponentBeginOverlap` tetiklenir.\n- Overlap eden actor player mı kontrol edilir.\n- Timeline `Play` çağrılır.\n- Timeline update pin'inde `SetRelativeRotation` veya `SetRelativeLocation` kullanılır.\n- Çıkışta `OnComponentEndOverlap` ile timeline reverse yapılabilir.\n\nC++ gerekiyorsa aynı mantık `UBoxComponent` ve `FTimeline` ile kurulabilir."} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Unreal'da Character hareket kodunu temiz şekilde göster.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity için basit player movement yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal'da Character hareket kodunu temiz şekilde göster.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity için basit player movement yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "MonoBehaviour içinde WASD movement nasıl yazılır?", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de oyuncu hareket kodunu temiz şekilde göster.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal Engine'de UPROPERTY ve UFUNCTION ne işe yarar?", "answer": "`UPROPERTY`, değişkeni Unreal reflection sistemine tanıtır. Böylece garbage collector, Blueprint, editor ve serialization sistemi değişkeni görebilir.\n\n`UFUNCTION`, C++ fonksiyonunu reflection sistemine açar. Blueprint'ten çağırmak veya event olarak kullanmak için gerekir.\n\n```cpp\nUPROPERTY(EditAnywhere, BlueprintReadWrite, Category=\"Stats\")\nfloat MaxHealth = 100.0f;\n\nUFUNCTION(BlueprintCallable, Category=\"Stats\")\nvoid TakeDamageAmount(float Amount);\n```\n\nUnreal'da UObject referanslarını çoğu zaman `UPROPERTY` ile tutmak önemlidir; aksi halde GC davranışı sorun çıkarabilir."} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity 2D'de Rigidbody2D ile oyuncu hareketi yaz.", "answer": "Bu örnek top-down 2D hareket içindir. Player objesinde `Rigidbody2D` olmalı ve gravity scale genelde 0 yapılır.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(Rigidbody2D))]\npublic class PlayerMovement2D : MonoBehaviour\n{\n [SerializeField] private float speed = 6f;\n\n private Rigidbody2D rb;\n private Vector2 input;\n\n private void Awake()\n {\n rb = GetComponent();\n }\n\n private void Update()\n {\n input.x = Input.GetAxisRaw(\"Horizontal\");\n input.y = Input.GetAxisRaw(\"Vertical\");\n input = input.normalized;\n }\n\n private void FixedUpdate()\n {\n rb.linearVelocity = input * speed;\n }\n}\n```\n\nEski Unity sürümlerinde `linearVelocity` yerine `velocity` kullanılır."} {"domain": "unity", "instruction": "Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: UE C++ AddMovementInput örneği ver.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "En temiz mimariyle öner: MonoBehaviour içinde WASD movement nasıl yazılır?", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal Blueprint ile kapı açma mantığını anlat.", "answer": "Kapı actor'ünde `Box Collision`, kapı mesh'i ve timeline bulunur. Player overlap olduğunda timeline çalışır, timeline değeriyle kapının rotation veya location değeri interpolate edilir.\n\nAkış:\n\n- `OnComponentBeginOverlap` tetiklenir.\n- Overlap eden actor player mı kontrol edilir.\n- Timeline `Play` çağrılır.\n- Timeline update pin'inde `SetRelativeRotation` veya `SetRelativeLocation` kullanılır.\n- Çıkışta `OnComponentEndOverlap` ile timeline reverse yapılabilir.\n\nC++ gerekiyorsa aynı mantık `UBoxComponent` ve `FTimeline` ile kurulabilir."} {"domain": "unreal", "instruction": "Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal C++ ile Actor içinde rotating pickup yaz.", "answer": "Pickup için `AActor` türetip mesh'i root'a bağlayabilir ve Tick içinde döndürebilirsin.\n\n```cpp\nUCLASS()\nclass ARotatingPickup : public AActor\n{\n GENERATED_BODY()\n\npublic:\n ARotatingPickup();\n virtual void Tick(float DeltaSeconds) override;\n\nprotected:\n UPROPERTY(VisibleAnywhere)\n UStaticMeshComponent* Mesh;\n\n UPROPERTY(EditAnywhere, Category=\"Pickup\")\n float RotationSpeed = 90.0f;\n};\n```\n\n```cpp\nARotatingPickup::ARotatingPickup()\n{\n PrimaryActorTick.bCanEverTick = true;\n Mesh = CreateDefaultSubobject(TEXT(\"Mesh\"));\n RootComponent = Mesh;\n}\n\nvoid ARotatingPickup::Tick(float DeltaSeconds)\n{\n Super::Tick(DeltaSeconds);\n AddActorLocalRotation(FRotator(0.0f, RotationSpeed * DeltaSeconds, 0.0f));\n}\n```"} {"domain": "unity", "instruction": "Kısa açıkla: Unity C# ile karakter hareketi örneği ver.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity C# ile karakter hareketi örneği ver.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: UE C++ AddMovementInput örneği ver.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Unreal Engine'de can sistemi için UHealthComponent yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de ScriptableObject ile item tanımı nasıl yapılır?", "answer": "ScriptableObject, item verisini prefab veya sahne bağımlılığı olmadan saklamak için uygundur.\n\n```csharp\nusing UnityEngine;\n\n[CreateAssetMenu(menuName = \"Game/Item\")]\npublic class ItemDefinition : ScriptableObject\n{\n public string id;\n public string displayName;\n public Sprite icon;\n public int maxStack = 1;\n}\n```\n\nProject penceresinde sağ tıklayıp `Create > Game > Item` ile asset oluşturabilirsin. Runtime state'i ScriptableObject üzerinde değil, inventory component içinde tutulmalıdır."} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal Blueprint ile kapı açma mantığını anlat.", "answer": "Kapı actor'ünde `Box Collision`, kapı mesh'i ve timeline bulunur. Player overlap olduğunda timeline çalışır, timeline değeriyle kapının rotation veya location değeri interpolate edilir.\n\nAkış:\n\n- `OnComponentBeginOverlap` tetiklenir.\n- Overlap eden actor player mı kontrol edilir.\n- Timeline `Play` çağrılır.\n- Timeline update pin'inde `SetRelativeRotation` veya `SetRelativeLocation` kullanılır.\n- Çıkışta `OnComponentEndOverlap` ile timeline reverse yapılabilir.\n\nC++ gerekiyorsa aynı mantık `UBoxComponent` ve `FTimeline` ile kurulabilir."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: UE C++ AddMovementInput örneği ver.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal C++ derleme hatalarında nasıl debug yapılır?", "answer": "Önce derleyicinin verdiği ilk hataya bak. Unreal build çıktısında sonraki hatalar çoğu zaman ilk hatanın sonucudur.\n\nKontrol listesi:\n\n- Header dosyasında `GENERATED_BODY()` doğru yerde mi?\n- `.generated.h` include'u en son include mu?\n- Sınıf adı dosya ve constructor adıyla uyumlu mu?\n- Eksik module dependency var mı?\n- Pointer tipleri forward declaration ile yetiyor mu, yoksa include gerekli mi?\n\nReflection hatalarında Unreal Editor'ü kapatıp temiz build almak da gerekebilir."} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal'da Character hareket kodunu temiz şekilde göster.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "MonoBehaviour içinde WASD movement nasıl yazılır?", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Unreal C++ ile Actor içinde rotating pickup yaz.", "answer": "Pickup için `AActor` türetip mesh'i root'a bağlayabilir ve Tick içinde döndürebilirsin.\n\n```cpp\nUCLASS()\nclass ARotatingPickup : public AActor\n{\n GENERATED_BODY()\n\npublic:\n ARotatingPickup();\n virtual void Tick(float DeltaSeconds) override;\n\nprotected:\n UPROPERTY(VisibleAnywhere)\n UStaticMeshComponent* Mesh;\n\n UPROPERTY(EditAnywhere, Category=\"Pickup\")\n float RotationSpeed = 90.0f;\n};\n```\n\n```cpp\nARotatingPickup::ARotatingPickup()\n{\n PrimaryActorTick.bCanEverTick = true;\n Mesh = CreateDefaultSubobject(TEXT(\"Mesh\"));\n RootComponent = Mesh;\n}\n\nvoid ARotatingPickup::Tick(float DeltaSeconds)\n{\n Super::Tick(DeltaSeconds);\n AddActorLocalRotation(FRotator(0.0f, RotationSpeed * DeltaSeconds, 0.0f));\n}\n```"} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity 2D'de Rigidbody2D ile oyuncu hareketi yaz.", "answer": "Bu örnek top-down 2D hareket içindir. Player objesinde `Rigidbody2D` olmalı ve gravity scale genelde 0 yapılır.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(Rigidbody2D))]\npublic class PlayerMovement2D : MonoBehaviour\n{\n [SerializeField] private float speed = 6f;\n\n private Rigidbody2D rb;\n private Vector2 input;\n\n private void Awake()\n {\n rb = GetComponent();\n }\n\n private void Update()\n {\n input.x = Input.GetAxisRaw(\"Horizontal\");\n input.y = Input.GetAxisRaw(\"Vertical\");\n input = input.normalized;\n }\n\n private void FixedUpdate()\n {\n rb.linearVelocity = input * speed;\n }\n}\n```\n\nEski Unity sürümlerinde `linearVelocity` yerine `velocity` kullanılır."} {"domain": "unreal", "instruction": "Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Kısa açıkla: Unity 2D'de Rigidbody2D ile oyuncu hareketi yaz.", "answer": "Bu örnek top-down 2D hareket içindir. Player objesinde `Rigidbody2D` olmalı ve gravity scale genelde 0 yapılır.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(Rigidbody2D))]\npublic class PlayerMovement2D : MonoBehaviour\n{\n [SerializeField] private float speed = 6f;\n\n private Rigidbody2D rb;\n private Vector2 input;\n\n private void Awake()\n {\n rb = GetComponent();\n }\n\n private void Update()\n {\n input.x = Input.GetAxisRaw(\"Horizontal\");\n input.y = Input.GetAxisRaw(\"Vertical\");\n input = input.normalized;\n }\n\n private void FixedUpdate()\n {\n rb.linearVelocity = input * speed;\n }\n}\n```\n\nEski Unity sürümlerinde `linearVelocity` yerine `velocity` kullanılır."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de ScriptableObject ile item tanımı nasıl yapılır?", "answer": "ScriptableObject, item verisini prefab veya sahne bağımlılığı olmadan saklamak için uygundur.\n\n```csharp\nusing UnityEngine;\n\n[CreateAssetMenu(menuName = \"Game/Item\")]\npublic class ItemDefinition : ScriptableObject\n{\n public string id;\n public string displayName;\n public Sprite icon;\n public int maxStack = 1;\n}\n```\n\nProject penceresinde sağ tıklayıp `Create > Game > Item` ile asset oluşturabilirsin. Runtime state'i ScriptableObject üzerinde değil, inventory component içinde tutulmalıdır."} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "En temiz mimariyle öner: MonoBehaviour içinde WASD movement nasıl yazılır?", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal C++ ile basit player movement yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal Engine Character class içinde hareket input'u bağla.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal Engine'de UPROPERTY ve UFUNCTION ne işe yarar?", "answer": "`UPROPERTY`, değişkeni Unreal reflection sistemine tanıtır. Böylece garbage collector, Blueprint, editor ve serialization sistemi değişkeni görebilir.\n\n`UFUNCTION`, C++ fonksiyonunu reflection sistemine açar. Blueprint'ten çağırmak veya event olarak kullanmak için gerekir.\n\n```cpp\nUPROPERTY(EditAnywhere, BlueprintReadWrite, Category=\"Stats\")\nfloat MaxHealth = 100.0f;\n\nUFUNCTION(BlueprintCallable, Category=\"Stats\")\nvoid TakeDamageAmount(float Amount);\n```\n\nUnreal'da UObject referanslarını çoğu zaman `UPROPERTY` ile tutmak önemlidir; aksi halde GC davranışı sorun çıkarabilir."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Unreal Engine Character class içinde hareket input'u bağla.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity C# ile karakter hareketi örneği ver.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de ScriptableObject ile item tanımı nasıl yapılır?", "answer": "ScriptableObject, item verisini prefab veya sahne bağımlılığı olmadan saklamak için uygundur.\n\n```csharp\nusing UnityEngine;\n\n[CreateAssetMenu(menuName = \"Game/Item\")]\npublic class ItemDefinition : ScriptableObject\n{\n public string id;\n public string displayName;\n public Sprite icon;\n public int maxStack = 1;\n}\n```\n\nProject penceresinde sağ tıklayıp `Create > Game > Item` ile asset oluşturabilirsin. Runtime state'i ScriptableObject üzerinde değil, inventory component içinde tutulmalıdır."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de null reference exception nasıl debug edilir?", "answer": "`NullReferenceException`, null olan bir değişkenin alanına veya metoduna eriştiğini gösterir. Inspector referansı atanmış mı, `GetComponent` sonucu null mı ve obje sahnede aktif mi kontrol et.\n\n```csharp\n[SerializeField] private Transform target;\n\nprivate void Awake()\n{\n if (target == null)\n {\n Debug.LogError(\"Target referansı Inspector'dan atanmadı.\", this);\n enabled = false;\n return;\n }\n}\n```\n\nHata satırına çift tıkla, o satırdaki her referansı tek tek kontrol et."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal Engine'de UPROPERTY ve UFUNCTION ne işe yarar?", "answer": "`UPROPERTY`, değişkeni Unreal reflection sistemine tanıtır. Böylece garbage collector, Blueprint, editor ve serialization sistemi değişkeni görebilir.\n\n`UFUNCTION`, C++ fonksiyonunu reflection sistemine açar. Blueprint'ten çağırmak veya event olarak kullanmak için gerekir.\n\n```cpp\nUPROPERTY(EditAnywhere, BlueprintReadWrite, Category=\"Stats\")\nfloat MaxHealth = 100.0f;\n\nUFUNCTION(BlueprintCallable, Category=\"Stats\")\nvoid TakeDamageAmount(float Amount);\n```\n\nUnreal'da UObject referanslarını çoğu zaman `UPROPERTY` ile tutmak önemlidir; aksi halde GC davranışı sorun çıkarabilir."} {"domain": "unity", "instruction": "Kısa açıkla: MonoBehaviour içinde WASD movement nasıl yazılır?", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Unity'de ScriptableObject ile item tanımı nasıl yapılır?", "answer": "ScriptableObject, item verisini prefab veya sahne bağımlılığı olmadan saklamak için uygundur.\n\n```csharp\nusing UnityEngine;\n\n[CreateAssetMenu(menuName = \"Game/Item\")]\npublic class ItemDefinition : ScriptableObject\n{\n public string id;\n public string displayName;\n public Sprite icon;\n public int maxStack = 1;\n}\n```\n\nProject penceresinde sağ tıklayıp `Create > Game > Item` ile asset oluşturabilirsin. Runtime state'i ScriptableObject üzerinde değil, inventory component içinde tutulmalıdır."} {"domain": "unreal", "instruction": "Unreal'da BlueprintCallable TakeDamage fonksiyonu olan health component oluştur.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Unity'de oyuncu hareket kodunu temiz şekilde göster.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal Engine'de can sistemi için UHealthComponent yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal'da BlueprintCallable TakeDamage fonksiyonu olan health component oluştur.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity 2D'de Rigidbody2D ile oyuncu hareketi yaz.", "answer": "Bu örnek top-down 2D hareket içindir. Player objesinde `Rigidbody2D` olmalı ve gravity scale genelde 0 yapılır.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(Rigidbody2D))]\npublic class PlayerMovement2D : MonoBehaviour\n{\n [SerializeField] private float speed = 6f;\n\n private Rigidbody2D rb;\n private Vector2 input;\n\n private void Awake()\n {\n rb = GetComponent();\n }\n\n private void Update()\n {\n input.x = Input.GetAxisRaw(\"Horizontal\");\n input.y = Input.GetAxisRaw(\"Vertical\");\n input = input.normalized;\n }\n\n private void FixedUpdate()\n {\n rb.linearVelocity = input * speed;\n }\n}\n```\n\nEski Unity sürümlerinde `linearVelocity` yerine `velocity` kullanılır."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de coin toplama sistemi C# ile nasıl yapılır?", "answer": "Coin objesinde trigger collider olmalı. Player objesini tag veya component ile ayırt edebilirsin.\n\n```csharp\nusing UnityEngine;\n\npublic class Coin : MonoBehaviour\n{\n [SerializeField] private int value = 1;\n\n private void OnTriggerEnter(Collider other)\n {\n if (!other.TryGetComponent(out var wallet))\n return;\n\n wallet.AddCoins(value);\n Destroy(gameObject);\n }\n}\n\npublic class PlayerWallet : MonoBehaviour\n{\n public int Coins { get; private set; }\n\n public void AddCoins(int amount)\n {\n Coins += amount;\n }\n}\n```"} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal Blueprint ile kapı açma mantığını anlat.", "answer": "Kapı actor'ünde `Box Collision`, kapı mesh'i ve timeline bulunur. Player overlap olduğunda timeline çalışır, timeline değeriyle kapının rotation veya location değeri interpolate edilir.\n\nAkış:\n\n- `OnComponentBeginOverlap` tetiklenir.\n- Overlap eden actor player mı kontrol edilir.\n- Timeline `Play` çağrılır.\n- Timeline update pin'inde `SetRelativeRotation` veya `SetRelativeLocation` kullanılır.\n- Çıkışta `OnComponentEndOverlap` ile timeline reverse yapılabilir.\n\nC++ gerekiyorsa aynı mantık `UBoxComponent` ve `FTimeline` ile kurulabilir."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal C++ ile Actor içinde rotating pickup yaz.", "answer": "Pickup için `AActor` türetip mesh'i root'a bağlayabilir ve Tick içinde döndürebilirsin.\n\n```cpp\nUCLASS()\nclass ARotatingPickup : public AActor\n{\n GENERATED_BODY()\n\npublic:\n ARotatingPickup();\n virtual void Tick(float DeltaSeconds) override;\n\nprotected:\n UPROPERTY(VisibleAnywhere)\n UStaticMeshComponent* Mesh;\n\n UPROPERTY(EditAnywhere, Category=\"Pickup\")\n float RotationSpeed = 90.0f;\n};\n```\n\n```cpp\nARotatingPickup::ARotatingPickup()\n{\n PrimaryActorTick.bCanEverTick = true;\n Mesh = CreateDefaultSubobject(TEXT(\"Mesh\"));\n RootComponent = Mesh;\n}\n\nvoid ARotatingPickup::Tick(float DeltaSeconds)\n{\n Super::Tick(DeltaSeconds);\n AddActorLocalRotation(FRotator(0.0f, RotationSpeed * DeltaSeconds, 0.0f));\n}\n```"} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal C++ ile basit player movement yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de oyuncu hareket kodunu temiz şekilde göster.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de oyuncu hareket kodunu temiz şekilde göster.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal Engine Character class içinde hareket input'u bağla.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal C++ ile Actor içinde rotating pickup yaz.", "answer": "Pickup için `AActor` türetip mesh'i root'a bağlayabilir ve Tick içinde döndürebilirsin.\n\n```cpp\nUCLASS()\nclass ARotatingPickup : public AActor\n{\n GENERATED_BODY()\n\npublic:\n ARotatingPickup();\n virtual void Tick(float DeltaSeconds) override;\n\nprotected:\n UPROPERTY(VisibleAnywhere)\n UStaticMeshComponent* Mesh;\n\n UPROPERTY(EditAnywhere, Category=\"Pickup\")\n float RotationSpeed = 90.0f;\n};\n```\n\n```cpp\nARotatingPickup::ARotatingPickup()\n{\n PrimaryActorTick.bCanEverTick = true;\n Mesh = CreateDefaultSubobject(TEXT(\"Mesh\"));\n RootComponent = Mesh;\n}\n\nvoid ARotatingPickup::Tick(float DeltaSeconds)\n{\n Super::Tick(DeltaSeconds);\n AddActorLocalRotation(FRotator(0.0f, RotationSpeed * DeltaSeconds, 0.0f));\n}\n```"} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Unreal Engine'de can sistemi için UHealthComponent yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "En temiz mimariyle öner: UE C++ AddMovementInput örneği ver.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: UE C++ UActorComponent tabanlı health component örneği ver.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity için basit player movement yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Unity'de oyuncu hareket kodunu temiz şekilde göster.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal'da BlueprintCallable TakeDamage fonksiyonu olan health component oluştur.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Kısa açıkla: Unity için basit player movement yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de null reference exception nasıl debug edilir?", "answer": "`NullReferenceException`, null olan bir değişkenin alanına veya metoduna eriştiğini gösterir. Inspector referansı atanmış mı, `GetComponent` sonucu null mı ve obje sahnede aktif mi kontrol et.\n\n```csharp\n[SerializeField] private Transform target;\n\nprivate void Awake()\n{\n if (target == null)\n {\n Debug.LogError(\"Target referansı Inspector'dan atanmadı.\", this);\n enabled = false;\n return;\n }\n}\n```\n\nHata satırına çift tıkla, o satırdaki her referansı tek tek kontrol et."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity C# ile karakter hareketi örneği ver.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal C++ ile Actor içinde rotating pickup yaz.", "answer": "Pickup için `AActor` türetip mesh'i root'a bağlayabilir ve Tick içinde döndürebilirsin.\n\n```cpp\nUCLASS()\nclass ARotatingPickup : public AActor\n{\n GENERATED_BODY()\n\npublic:\n ARotatingPickup();\n virtual void Tick(float DeltaSeconds) override;\n\nprotected:\n UPROPERTY(VisibleAnywhere)\n UStaticMeshComponent* Mesh;\n\n UPROPERTY(EditAnywhere, Category=\"Pickup\")\n float RotationSpeed = 90.0f;\n};\n```\n\n```cpp\nARotatingPickup::ARotatingPickup()\n{\n PrimaryActorTick.bCanEverTick = true;\n Mesh = CreateDefaultSubobject(TEXT(\"Mesh\"));\n RootComponent = Mesh;\n}\n\nvoid ARotatingPickup::Tick(float DeltaSeconds)\n{\n Super::Tick(DeltaSeconds);\n AddActorLocalRotation(FRotator(0.0f, RotationSpeed * DeltaSeconds, 0.0f));\n}\n```"} {"domain": "unity", "instruction": "Kısa açıkla: Unity C# ile karakter hareketi örneği ver.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Unreal Engine Character class içinde hareket input'u bağla.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity için basit player movement yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity C# ile karakter hareketi örneği ver.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal C++ ile basit player movement yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal Blueprint ile kapı açma mantığını anlat.", "answer": "Kapı actor'ünde `Box Collision`, kapı mesh'i ve timeline bulunur. Player overlap olduğunda timeline çalışır, timeline değeriyle kapının rotation veya location değeri interpolate edilir.\n\nAkış:\n\n- `OnComponentBeginOverlap` tetiklenir.\n- Overlap eden actor player mı kontrol edilir.\n- Timeline `Play` çağrılır.\n- Timeline update pin'inde `SetRelativeRotation` veya `SetRelativeLocation` kullanılır.\n- Çıkışta `OnComponentEndOverlap` ile timeline reverse yapılabilir.\n\nC++ gerekiyorsa aynı mantık `UBoxComponent` ve `FTimeline` ile kurulabilir."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Unreal C++ ile Actor içinde rotating pickup yaz.", "answer": "Pickup için `AActor` türetip mesh'i root'a bağlayabilir ve Tick içinde döndürebilirsin.\n\n```cpp\nUCLASS()\nclass ARotatingPickup : public AActor\n{\n GENERATED_BODY()\n\npublic:\n ARotatingPickup();\n virtual void Tick(float DeltaSeconds) override;\n\nprotected:\n UPROPERTY(VisibleAnywhere)\n UStaticMeshComponent* Mesh;\n\n UPROPERTY(EditAnywhere, Category=\"Pickup\")\n float RotationSpeed = 90.0f;\n};\n```\n\n```cpp\nARotatingPickup::ARotatingPickup()\n{\n PrimaryActorTick.bCanEverTick = true;\n Mesh = CreateDefaultSubobject(TEXT(\"Mesh\"));\n RootComponent = Mesh;\n}\n\nvoid ARotatingPickup::Tick(float DeltaSeconds)\n{\n Super::Tick(DeltaSeconds);\n AddActorLocalRotation(FRotator(0.0f, RotationSpeed * DeltaSeconds, 0.0f));\n}\n```"} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal C++ ile Actor içinde rotating pickup yaz.", "answer": "Pickup için `AActor` türetip mesh'i root'a bağlayabilir ve Tick içinde döndürebilirsin.\n\n```cpp\nUCLASS()\nclass ARotatingPickup : public AActor\n{\n GENERATED_BODY()\n\npublic:\n ARotatingPickup();\n virtual void Tick(float DeltaSeconds) override;\n\nprotected:\n UPROPERTY(VisibleAnywhere)\n UStaticMeshComponent* Mesh;\n\n UPROPERTY(EditAnywhere, Category=\"Pickup\")\n float RotationSpeed = 90.0f;\n};\n```\n\n```cpp\nARotatingPickup::ARotatingPickup()\n{\n PrimaryActorTick.bCanEverTick = true;\n Mesh = CreateDefaultSubobject(TEXT(\"Mesh\"));\n RootComponent = Mesh;\n}\n\nvoid ARotatingPickup::Tick(float DeltaSeconds)\n{\n Super::Tick(DeltaSeconds);\n AddActorLocalRotation(FRotator(0.0f, RotationSpeed * DeltaSeconds, 0.0f));\n}\n```"} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal C++ derleme hatalarında nasıl debug yapılır?", "answer": "Önce derleyicinin verdiği ilk hataya bak. Unreal build çıktısında sonraki hatalar çoğu zaman ilk hatanın sonucudur.\n\nKontrol listesi:\n\n- Header dosyasında `GENERATED_BODY()` doğru yerde mi?\n- `.generated.h` include'u en son include mu?\n- Sınıf adı dosya ve constructor adıyla uyumlu mu?\n- Eksik module dependency var mı?\n- Pointer tipleri forward declaration ile yetiyor mu, yoksa include gerekli mi?\n\nReflection hatalarında Unreal Editor'ü kapatıp temiz build almak da gerekebilir."} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: UE C++ AddMovementInput örneği ver.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal C++ ile Actor içinde rotating pickup yaz.", "answer": "Pickup için `AActor` türetip mesh'i root'a bağlayabilir ve Tick içinde döndürebilirsin.\n\n```cpp\nUCLASS()\nclass ARotatingPickup : public AActor\n{\n GENERATED_BODY()\n\npublic:\n ARotatingPickup();\n virtual void Tick(float DeltaSeconds) override;\n\nprotected:\n UPROPERTY(VisibleAnywhere)\n UStaticMeshComponent* Mesh;\n\n UPROPERTY(EditAnywhere, Category=\"Pickup\")\n float RotationSpeed = 90.0f;\n};\n```\n\n```cpp\nARotatingPickup::ARotatingPickup()\n{\n PrimaryActorTick.bCanEverTick = true;\n Mesh = CreateDefaultSubobject(TEXT(\"Mesh\"));\n RootComponent = Mesh;\n}\n\nvoid ARotatingPickup::Tick(float DeltaSeconds)\n{\n Super::Tick(DeltaSeconds);\n AddActorLocalRotation(FRotator(0.0f, RotationSpeed * DeltaSeconds, 0.0f));\n}\n```"} {"domain": "unreal", "instruction": "Unreal'da BlueprintCallable TakeDamage fonksiyonu olan health component oluştur.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Kısa açıkla: UE C++ UActorComponent tabanlı health component örneği ver.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Kod örneğiyle göster: MonoBehaviour içinde WASD movement nasıl yazılır?", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de oyuncu hareket kodunu temiz şekilde göster.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal Blueprint ile kapı açma mantığını anlat.", "answer": "Kapı actor'ünde `Box Collision`, kapı mesh'i ve timeline bulunur. Player overlap olduğunda timeline çalışır, timeline değeriyle kapının rotation veya location değeri interpolate edilir.\n\nAkış:\n\n- `OnComponentBeginOverlap` tetiklenir.\n- Overlap eden actor player mı kontrol edilir.\n- Timeline `Play` çağrılır.\n- Timeline update pin'inde `SetRelativeRotation` veya `SetRelativeLocation` kullanılır.\n- Çıkışta `OnComponentEndOverlap` ile timeline reverse yapılabilir.\n\nC++ gerekiyorsa aynı mantık `UBoxComponent` ve `FTimeline` ile kurulabilir."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal C++ derleme hatalarında nasıl debug yapılır?", "answer": "Önce derleyicinin verdiği ilk hataya bak. Unreal build çıktısında sonraki hatalar çoğu zaman ilk hatanın sonucudur.\n\nKontrol listesi:\n\n- Header dosyasında `GENERATED_BODY()` doğru yerde mi?\n- `.generated.h` include'u en son include mu?\n- Sınıf adı dosya ve constructor adıyla uyumlu mu?\n- Eksik module dependency var mı?\n- Pointer tipleri forward declaration ile yetiyor mu, yoksa include gerekli mi?\n\nReflection hatalarında Unreal Editor'ü kapatıp temiz build almak da gerekebilir."} {"domain": "unreal", "instruction": "Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity 2D'de Rigidbody2D ile oyuncu hareketi yaz.", "answer": "Bu örnek top-down 2D hareket içindir. Player objesinde `Rigidbody2D` olmalı ve gravity scale genelde 0 yapılır.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(Rigidbody2D))]\npublic class PlayerMovement2D : MonoBehaviour\n{\n [SerializeField] private float speed = 6f;\n\n private Rigidbody2D rb;\n private Vector2 input;\n\n private void Awake()\n {\n rb = GetComponent();\n }\n\n private void Update()\n {\n input.x = Input.GetAxisRaw(\"Horizontal\");\n input.y = Input.GetAxisRaw(\"Vertical\");\n input = input.normalized;\n }\n\n private void FixedUpdate()\n {\n rb.linearVelocity = input * speed;\n }\n}\n```\n\nEski Unity sürümlerinde `linearVelocity` yerine `velocity` kullanılır."} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal Engine'de UPROPERTY ve UFUNCTION ne işe yarar?", "answer": "`UPROPERTY`, değişkeni Unreal reflection sistemine tanıtır. Böylece garbage collector, Blueprint, editor ve serialization sistemi değişkeni görebilir.\n\n`UFUNCTION`, C++ fonksiyonunu reflection sistemine açar. Blueprint'ten çağırmak veya event olarak kullanmak için gerekir.\n\n```cpp\nUPROPERTY(EditAnywhere, BlueprintReadWrite, Category=\"Stats\")\nfloat MaxHealth = 100.0f;\n\nUFUNCTION(BlueprintCallable, Category=\"Stats\")\nvoid TakeDamageAmount(float Amount);\n```\n\nUnreal'da UObject referanslarını çoğu zaman `UPROPERTY` ile tutmak önemlidir; aksi halde GC davranışı sorun çıkarabilir."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal'da Character hareket kodunu temiz şekilde göster.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: MonoBehaviour içinde WASD movement nasıl yazılır?", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de null reference exception nasıl debug edilir?", "answer": "`NullReferenceException`, null olan bir değişkenin alanına veya metoduna eriştiğini gösterir. Inspector referansı atanmış mı, `GetComponent` sonucu null mı ve obje sahnede aktif mi kontrol et.\n\n```csharp\n[SerializeField] private Transform target;\n\nprivate void Awake()\n{\n if (target == null)\n {\n Debug.LogError(\"Target referansı Inspector'dan atanmadı.\", this);\n enabled = false;\n return;\n }\n}\n```\n\nHata satırına çift tıkla, o satırdaki her referansı tek tek kontrol et."} {"domain": "unity", "instruction": "Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal Engine'de can sistemi için UHealthComponent yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de coin toplama sistemi C# ile nasıl yapılır?", "answer": "Coin objesinde trigger collider olmalı. Player objesini tag veya component ile ayırt edebilirsin.\n\n```csharp\nusing UnityEngine;\n\npublic class Coin : MonoBehaviour\n{\n [SerializeField] private int value = 1;\n\n private void OnTriggerEnter(Collider other)\n {\n if (!other.TryGetComponent(out var wallet))\n return;\n\n wallet.AddCoins(value);\n Destroy(gameObject);\n }\n}\n\npublic class PlayerWallet : MonoBehaviour\n{\n public int Coins { get; private set; }\n\n public void AddCoins(int amount)\n {\n Coins += amount;\n }\n}\n```"} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal Blueprint ile kapı açma mantığını anlat.", "answer": "Kapı actor'ünde `Box Collision`, kapı mesh'i ve timeline bulunur. Player overlap olduğunda timeline çalışır, timeline değeriyle kapının rotation veya location değeri interpolate edilir.\n\nAkış:\n\n- `OnComponentBeginOverlap` tetiklenir.\n- Overlap eden actor player mı kontrol edilir.\n- Timeline `Play` çağrılır.\n- Timeline update pin'inde `SetRelativeRotation` veya `SetRelativeLocation` kullanılır.\n- Çıkışta `OnComponentEndOverlap` ile timeline reverse yapılabilir.\n\nC++ gerekiyorsa aynı mantık `UBoxComponent` ve `FTimeline` ile kurulabilir."} {"domain": "unreal", "instruction": "Kısa açıkla: UE C++ AddMovementInput örneği ver.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal'da BlueprintCallable TakeDamage fonksiyonu olan health component oluştur.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal Engine Character class içinde hareket input'u bağla.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal Engine'de can sistemi için UHealthComponent yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal C++ derleme hatalarında nasıl debug yapılır?", "answer": "Önce derleyicinin verdiği ilk hataya bak. Unreal build çıktısında sonraki hatalar çoğu zaman ilk hatanın sonucudur.\n\nKontrol listesi:\n\n- Header dosyasında `GENERATED_BODY()` doğru yerde mi?\n- `.generated.h` include'u en son include mu?\n- Sınıf adı dosya ve constructor adıyla uyumlu mu?\n- Eksik module dependency var mı?\n- Pointer tipleri forward declaration ile yetiyor mu, yoksa include gerekli mi?\n\nReflection hatalarında Unreal Editor'ü kapatıp temiz build almak da gerekebilir."} {"domain": "unity", "instruction": "Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de null reference exception nasıl debug edilir?", "answer": "`NullReferenceException`, null olan bir değişkenin alanına veya metoduna eriştiğini gösterir. Inspector referansı atanmış mı, `GetComponent` sonucu null mı ve obje sahnede aktif mi kontrol et.\n\n```csharp\n[SerializeField] private Transform target;\n\nprivate void Awake()\n{\n if (target == null)\n {\n Debug.LogError(\"Target referansı Inspector'dan atanmadı.\", this);\n enabled = false;\n return;\n }\n}\n```\n\nHata satırına çift tıkla, o satırdaki her referansı tek tek kontrol et."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Unreal Engine'de UPROPERTY ve UFUNCTION ne işe yarar?", "answer": "`UPROPERTY`, değişkeni Unreal reflection sistemine tanıtır. Böylece garbage collector, Blueprint, editor ve serialization sistemi değişkeni görebilir.\n\n`UFUNCTION`, C++ fonksiyonunu reflection sistemine açar. Blueprint'ten çağırmak veya event olarak kullanmak için gerekir.\n\n```cpp\nUPROPERTY(EditAnywhere, BlueprintReadWrite, Category=\"Stats\")\nfloat MaxHealth = 100.0f;\n\nUFUNCTION(BlueprintCallable, Category=\"Stats\")\nvoid TakeDamageAmount(float Amount);\n```\n\nUnreal'da UObject referanslarını çoğu zaman `UPROPERTY` ile tutmak önemlidir; aksi halde GC davranışı sorun çıkarabilir."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal C++ derleme hatalarında nasıl debug yapılır?", "answer": "Önce derleyicinin verdiği ilk hataya bak. Unreal build çıktısında sonraki hatalar çoğu zaman ilk hatanın sonucudur.\n\nKontrol listesi:\n\n- Header dosyasında `GENERATED_BODY()` doğru yerde mi?\n- `.generated.h` include'u en son include mu?\n- Sınıf adı dosya ve constructor adıyla uyumlu mu?\n- Eksik module dependency var mı?\n- Pointer tipleri forward declaration ile yetiyor mu, yoksa include gerekli mi?\n\nReflection hatalarında Unreal Editor'ü kapatıp temiz build almak da gerekebilir."} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: MonoBehaviour içinde WASD movement nasıl yazılır?", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal C++ ile basit player movement yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal Engine'de UPROPERTY ve UFUNCTION ne işe yarar?", "answer": "`UPROPERTY`, değişkeni Unreal reflection sistemine tanıtır. Böylece garbage collector, Blueprint, editor ve serialization sistemi değişkeni görebilir.\n\n`UFUNCTION`, C++ fonksiyonunu reflection sistemine açar. Blueprint'ten çağırmak veya event olarak kullanmak için gerekir.\n\n```cpp\nUPROPERTY(EditAnywhere, BlueprintReadWrite, Category=\"Stats\")\nfloat MaxHealth = 100.0f;\n\nUFUNCTION(BlueprintCallable, Category=\"Stats\")\nvoid TakeDamageAmount(float Amount);\n```\n\nUnreal'da UObject referanslarını çoğu zaman `UPROPERTY` ile tutmak önemlidir; aksi halde GC davranışı sorun çıkarabilir."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de oyuncu hareket kodunu temiz şekilde göster.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal Engine'de can sistemi için UHealthComponent yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal C++ ile Actor içinde rotating pickup yaz.", "answer": "Pickup için `AActor` türetip mesh'i root'a bağlayabilir ve Tick içinde döndürebilirsin.\n\n```cpp\nUCLASS()\nclass ARotatingPickup : public AActor\n{\n GENERATED_BODY()\n\npublic:\n ARotatingPickup();\n virtual void Tick(float DeltaSeconds) override;\n\nprotected:\n UPROPERTY(VisibleAnywhere)\n UStaticMeshComponent* Mesh;\n\n UPROPERTY(EditAnywhere, Category=\"Pickup\")\n float RotationSpeed = 90.0f;\n};\n```\n\n```cpp\nARotatingPickup::ARotatingPickup()\n{\n PrimaryActorTick.bCanEverTick = true;\n Mesh = CreateDefaultSubobject(TEXT(\"Mesh\"));\n RootComponent = Mesh;\n}\n\nvoid ARotatingPickup::Tick(float DeltaSeconds)\n{\n Super::Tick(DeltaSeconds);\n AddActorLocalRotation(FRotator(0.0f, RotationSpeed * DeltaSeconds, 0.0f));\n}\n```"} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de null reference exception nasıl debug edilir?", "answer": "`NullReferenceException`, null olan bir değişkenin alanına veya metoduna eriştiğini gösterir. Inspector referansı atanmış mı, `GetComponent` sonucu null mı ve obje sahnede aktif mi kontrol et.\n\n```csharp\n[SerializeField] private Transform target;\n\nprivate void Awake()\n{\n if (target == null)\n {\n Debug.LogError(\"Target referansı Inspector'dan atanmadı.\", this);\n enabled = false;\n return;\n }\n}\n```\n\nHata satırına çift tıkla, o satırdaki her referansı tek tek kontrol et."} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Unreal Blueprint ile kapı açma mantığını anlat.", "answer": "Kapı actor'ünde `Box Collision`, kapı mesh'i ve timeline bulunur. Player overlap olduğunda timeline çalışır, timeline değeriyle kapının rotation veya location değeri interpolate edilir.\n\nAkış:\n\n- `OnComponentBeginOverlap` tetiklenir.\n- Overlap eden actor player mı kontrol edilir.\n- Timeline `Play` çağrılır.\n- Timeline update pin'inde `SetRelativeRotation` veya `SetRelativeLocation` kullanılır.\n- Çıkışta `OnComponentEndOverlap` ile timeline reverse yapılabilir.\n\nC++ gerekiyorsa aynı mantık `UBoxComponent` ve `FTimeline` ile kurulabilir."} {"domain": "unity", "instruction": "Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal'da BlueprintCallable TakeDamage fonksiyonu olan health component oluştur.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity C# ile karakter hareketi örneği ver.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de oyuncu hareket kodunu temiz şekilde göster.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal Engine Character class içinde hareket input'u bağla.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Kısa açıkla: UE C++ UActorComponent tabanlı health component örneği ver.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Kısa açıkla: Unity C# ile karakter hareketi örneği ver.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: UE C++ UActorComponent tabanlı health component örneği ver.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal C++ ile basit player movement yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Unity C# ile karakter hareketi örneği ver.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal'da Character hareket kodunu temiz şekilde göster.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity 2D'de Rigidbody2D ile oyuncu hareketi yaz.", "answer": "Bu örnek top-down 2D hareket içindir. Player objesinde `Rigidbody2D` olmalı ve gravity scale genelde 0 yapılır.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(Rigidbody2D))]\npublic class PlayerMovement2D : MonoBehaviour\n{\n [SerializeField] private float speed = 6f;\n\n private Rigidbody2D rb;\n private Vector2 input;\n\n private void Awake()\n {\n rb = GetComponent();\n }\n\n private void Update()\n {\n input.x = Input.GetAxisRaw(\"Horizontal\");\n input.y = Input.GetAxisRaw(\"Vertical\");\n input = input.normalized;\n }\n\n private void FixedUpdate()\n {\n rb.linearVelocity = input * speed;\n }\n}\n```\n\nEski Unity sürümlerinde `linearVelocity` yerine `velocity` kullanılır."} {"domain": "unreal", "instruction": "Unreal C++ ile basit player movement yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal Engine'de UPROPERTY ve UFUNCTION ne işe yarar?", "answer": "`UPROPERTY`, değişkeni Unreal reflection sistemine tanıtır. Böylece garbage collector, Blueprint, editor ve serialization sistemi değişkeni görebilir.\n\n`UFUNCTION`, C++ fonksiyonunu reflection sistemine açar. Blueprint'ten çağırmak veya event olarak kullanmak için gerekir.\n\n```cpp\nUPROPERTY(EditAnywhere, BlueprintReadWrite, Category=\"Stats\")\nfloat MaxHealth = 100.0f;\n\nUFUNCTION(BlueprintCallable, Category=\"Stats\")\nvoid TakeDamageAmount(float Amount);\n```\n\nUnreal'da UObject referanslarını çoğu zaman `UPROPERTY` ile tutmak önemlidir; aksi halde GC davranışı sorun çıkarabilir."} {"domain": "unreal", "instruction": "Unreal Blueprint ile kapı açma mantığını anlat.", "answer": "Kapı actor'ünde `Box Collision`, kapı mesh'i ve timeline bulunur. Player overlap olduğunda timeline çalışır, timeline değeriyle kapının rotation veya location değeri interpolate edilir.\n\nAkış:\n\n- `OnComponentBeginOverlap` tetiklenir.\n- Overlap eden actor player mı kontrol edilir.\n- Timeline `Play` çağrılır.\n- Timeline update pin'inde `SetRelativeRotation` veya `SetRelativeLocation` kullanılır.\n- Çıkışta `OnComponentEndOverlap` ile timeline reverse yapılabilir.\n\nC++ gerekiyorsa aynı mantık `UBoxComponent` ve `FTimeline` ile kurulabilir."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity için basit player movement yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal C++ ile basit player movement yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity 2D'de Rigidbody2D ile oyuncu hareketi yaz.", "answer": "Bu örnek top-down 2D hareket içindir. Player objesinde `Rigidbody2D` olmalı ve gravity scale genelde 0 yapılır.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(Rigidbody2D))]\npublic class PlayerMovement2D : MonoBehaviour\n{\n [SerializeField] private float speed = 6f;\n\n private Rigidbody2D rb;\n private Vector2 input;\n\n private void Awake()\n {\n rb = GetComponent();\n }\n\n private void Update()\n {\n input.x = Input.GetAxisRaw(\"Horizontal\");\n input.y = Input.GetAxisRaw(\"Vertical\");\n input = input.normalized;\n }\n\n private void FixedUpdate()\n {\n rb.linearVelocity = input * speed;\n }\n}\n```\n\nEski Unity sürümlerinde `linearVelocity` yerine `velocity` kullanılır."} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: UE C++ AddMovementInput örneği ver.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal'da BlueprintCallable TakeDamage fonksiyonu olan health component oluştur.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de ScriptableObject ile item tanımı nasıl yapılır?", "answer": "ScriptableObject, item verisini prefab veya sahne bağımlılığı olmadan saklamak için uygundur.\n\n```csharp\nusing UnityEngine;\n\n[CreateAssetMenu(menuName = \"Game/Item\")]\npublic class ItemDefinition : ScriptableObject\n{\n public string id;\n public string displayName;\n public Sprite icon;\n public int maxStack = 1;\n}\n```\n\nProject penceresinde sağ tıklayıp `Create > Game > Item` ile asset oluşturabilirsin. Runtime state'i ScriptableObject üzerinde değil, inventory component içinde tutulmalıdır."} {"domain": "unreal", "instruction": "Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity için basit player movement yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de null reference exception nasıl debug edilir?", "answer": "`NullReferenceException`, null olan bir değişkenin alanına veya metoduna eriştiğini gösterir. Inspector referansı atanmış mı, `GetComponent` sonucu null mı ve obje sahnede aktif mi kontrol et.\n\n```csharp\n[SerializeField] private Transform target;\n\nprivate void Awake()\n{\n if (target == null)\n {\n Debug.LogError(\"Target referansı Inspector'dan atanmadı.\", this);\n enabled = false;\n return;\n }\n}\n```\n\nHata satırına çift tıkla, o satırdaki her referansı tek tek kontrol et."} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal Engine Character class içinde hareket input'u bağla.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal Blueprint ile kapı açma mantığını anlat.", "answer": "Kapı actor'ünde `Box Collision`, kapı mesh'i ve timeline bulunur. Player overlap olduğunda timeline çalışır, timeline değeriyle kapının rotation veya location değeri interpolate edilir.\n\nAkış:\n\n- `OnComponentBeginOverlap` tetiklenir.\n- Overlap eden actor player mı kontrol edilir.\n- Timeline `Play` çağrılır.\n- Timeline update pin'inde `SetRelativeRotation` veya `SetRelativeLocation` kullanılır.\n- Çıkışta `OnComponentEndOverlap` ile timeline reverse yapılabilir.\n\nC++ gerekiyorsa aynı mantık `UBoxComponent` ve `FTimeline` ile kurulabilir."} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal'da BlueprintCallable TakeDamage fonksiyonu olan health component oluştur.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity için basit player movement yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal'da BlueprintCallable TakeDamage fonksiyonu olan health component oluştur.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Unity için basit player movement yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Unity'de coin toplama sistemi C# ile nasıl yapılır?", "answer": "Coin objesinde trigger collider olmalı. Player objesini tag veya component ile ayırt edebilirsin.\n\n```csharp\nusing UnityEngine;\n\npublic class Coin : MonoBehaviour\n{\n [SerializeField] private int value = 1;\n\n private void OnTriggerEnter(Collider other)\n {\n if (!other.TryGetComponent(out var wallet))\n return;\n\n wallet.AddCoins(value);\n Destroy(gameObject);\n }\n}\n\npublic class PlayerWallet : MonoBehaviour\n{\n public int Coins { get; private set; }\n\n public void AddCoins(int amount)\n {\n Coins += amount;\n }\n}\n```"} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal C++ derleme hatalarında nasıl debug yapılır?", "answer": "Önce derleyicinin verdiği ilk hataya bak. Unreal build çıktısında sonraki hatalar çoğu zaman ilk hatanın sonucudur.\n\nKontrol listesi:\n\n- Header dosyasında `GENERATED_BODY()` doğru yerde mi?\n- `.generated.h` include'u en son include mu?\n- Sınıf adı dosya ve constructor adıyla uyumlu mu?\n- Eksik module dependency var mı?\n- Pointer tipleri forward declaration ile yetiyor mu, yoksa include gerekli mi?\n\nReflection hatalarında Unreal Editor'ü kapatıp temiz build almak da gerekebilir."} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal'da Character hareket kodunu temiz şekilde göster.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: MonoBehaviour içinde WASD movement nasıl yazılır?", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de oyuncu hareket kodunu temiz şekilde göster.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal Engine'de UPROPERTY ve UFUNCTION ne işe yarar?", "answer": "`UPROPERTY`, değişkeni Unreal reflection sistemine tanıtır. Böylece garbage collector, Blueprint, editor ve serialization sistemi değişkeni görebilir.\n\n`UFUNCTION`, C++ fonksiyonunu reflection sistemine açar. Blueprint'ten çağırmak veya event olarak kullanmak için gerekir.\n\n```cpp\nUPROPERTY(EditAnywhere, BlueprintReadWrite, Category=\"Stats\")\nfloat MaxHealth = 100.0f;\n\nUFUNCTION(BlueprintCallable, Category=\"Stats\")\nvoid TakeDamageAmount(float Amount);\n```\n\nUnreal'da UObject referanslarını çoğu zaman `UPROPERTY` ile tutmak önemlidir; aksi halde GC davranışı sorun çıkarabilir."} {"domain": "unreal", "instruction": "Unreal C++ derleme hatalarında nasıl debug yapılır?", "answer": "Önce derleyicinin verdiği ilk hataya bak. Unreal build çıktısında sonraki hatalar çoğu zaman ilk hatanın sonucudur.\n\nKontrol listesi:\n\n- Header dosyasında `GENERATED_BODY()` doğru yerde mi?\n- `.generated.h` include'u en son include mu?\n- Sınıf adı dosya ve constructor adıyla uyumlu mu?\n- Eksik module dependency var mı?\n- Pointer tipleri forward declaration ile yetiyor mu, yoksa include gerekli mi?\n\nReflection hatalarında Unreal Editor'ü kapatıp temiz build almak da gerekebilir."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal Engine'de UPROPERTY ve UFUNCTION ne işe yarar?", "answer": "`UPROPERTY`, değişkeni Unreal reflection sistemine tanıtır. Böylece garbage collector, Blueprint, editor ve serialization sistemi değişkeni görebilir.\n\n`UFUNCTION`, C++ fonksiyonunu reflection sistemine açar. Blueprint'ten çağırmak veya event olarak kullanmak için gerekir.\n\n```cpp\nUPROPERTY(EditAnywhere, BlueprintReadWrite, Category=\"Stats\")\nfloat MaxHealth = 100.0f;\n\nUFUNCTION(BlueprintCallable, Category=\"Stats\")\nvoid TakeDamageAmount(float Amount);\n```\n\nUnreal'da UObject referanslarını çoğu zaman `UPROPERTY` ile tutmak önemlidir; aksi halde GC davranışı sorun çıkarabilir."} {"domain": "unreal", "instruction": "Unreal Blueprint ile kapı açma mantığını anlat.", "answer": "Kapı actor'ünde `Box Collision`, kapı mesh'i ve timeline bulunur. Player overlap olduğunda timeline çalışır, timeline değeriyle kapının rotation veya location değeri interpolate edilir.\n\nAkış:\n\n- `OnComponentBeginOverlap` tetiklenir.\n- Overlap eden actor player mı kontrol edilir.\n- Timeline `Play` çağrılır.\n- Timeline update pin'inde `SetRelativeRotation` veya `SetRelativeLocation` kullanılır.\n- Çıkışta `OnComponentEndOverlap` ile timeline reverse yapılabilir.\n\nC++ gerekiyorsa aynı mantık `UBoxComponent` ve `FTimeline` ile kurulabilir."} {"domain": "unreal", "instruction": "UE C++ UActorComponent tabanlı health component örneği ver.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Hata ayıklama açısından açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity 2D'de Rigidbody2D ile oyuncu hareketi yaz.", "answer": "Bu örnek top-down 2D hareket içindir. Player objesinde `Rigidbody2D` olmalı ve gravity scale genelde 0 yapılır.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(Rigidbody2D))]\npublic class PlayerMovement2D : MonoBehaviour\n{\n [SerializeField] private float speed = 6f;\n\n private Rigidbody2D rb;\n private Vector2 input;\n\n private void Awake()\n {\n rb = GetComponent();\n }\n\n private void Update()\n {\n input.x = Input.GetAxisRaw(\"Horizontal\");\n input.y = Input.GetAxisRaw(\"Vertical\");\n input = input.normalized;\n }\n\n private void FixedUpdate()\n {\n rb.linearVelocity = input * speed;\n }\n}\n```\n\nEski Unity sürümlerinde `linearVelocity` yerine `velocity` kullanılır."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal C++ derleme hatalarında nasıl debug yapılır?", "answer": "Önce derleyicinin verdiği ilk hataya bak. Unreal build çıktısında sonraki hatalar çoğu zaman ilk hatanın sonucudur.\n\nKontrol listesi:\n\n- Header dosyasında `GENERATED_BODY()` doğru yerde mi?\n- `.generated.h` include'u en son include mu?\n- Sınıf adı dosya ve constructor adıyla uyumlu mu?\n- Eksik module dependency var mı?\n- Pointer tipleri forward declaration ile yetiyor mu, yoksa include gerekli mi?\n\nReflection hatalarında Unreal Editor'ü kapatıp temiz build almak da gerekebilir."} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "Yeni başlayan biri için anlat: Unreal Engine'de UPROPERTY ve UFUNCTION ne işe yarar?", "answer": "`UPROPERTY`, değişkeni Unreal reflection sistemine tanıtır. Böylece garbage collector, Blueprint, editor ve serialization sistemi değişkeni görebilir.\n\n`UFUNCTION`, C++ fonksiyonunu reflection sistemine açar. Blueprint'ten çağırmak veya event olarak kullanmak için gerekir.\n\n```cpp\nUPROPERTY(EditAnywhere, BlueprintReadWrite, Category=\"Stats\")\nfloat MaxHealth = 100.0f;\n\nUFUNCTION(BlueprintCallable, Category=\"Stats\")\nvoid TakeDamageAmount(float Amount);\n```\n\nUnreal'da UObject referanslarını çoğu zaman `UPROPERTY` ile tutmak önemlidir; aksi halde GC davranışı sorun çıkarabilir."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Kod örneğiyle göster: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal'da BlueprintCallable TakeDamage fonksiyonu olan health component oluştur.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de coin toplama sistemi C# ile nasıl yapılır?", "answer": "Coin objesinde trigger collider olmalı. Player objesini tag veya component ile ayırt edebilirsin.\n\n```csharp\nusing UnityEngine;\n\npublic class Coin : MonoBehaviour\n{\n [SerializeField] private int value = 1;\n\n private void OnTriggerEnter(Collider other)\n {\n if (!other.TryGetComponent(out var wallet))\n return;\n\n wallet.AddCoins(value);\n Destroy(gameObject);\n }\n}\n\npublic class PlayerWallet : MonoBehaviour\n{\n public int Coins { get; private set; }\n\n public void AddCoins(int amount)\n {\n Coins += amount;\n }\n}\n```"} {"domain": "unreal", "instruction": "Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Kod örneğiyle göster: MonoBehaviour içinde WASD movement nasıl yazılır?", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Unity 2D'de Rigidbody2D ile oyuncu hareketi yaz.", "answer": "Bu örnek top-down 2D hareket içindir. Player objesinde `Rigidbody2D` olmalı ve gravity scale genelde 0 yapılır.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(Rigidbody2D))]\npublic class PlayerMovement2D : MonoBehaviour\n{\n [SerializeField] private float speed = 6f;\n\n private Rigidbody2D rb;\n private Vector2 input;\n\n private void Awake()\n {\n rb = GetComponent();\n }\n\n private void Update()\n {\n input.x = Input.GetAxisRaw(\"Horizontal\");\n input.y = Input.GetAxisRaw(\"Vertical\");\n input = input.normalized;\n }\n\n private void FixedUpdate()\n {\n rb.linearVelocity = input * speed;\n }\n}\n```\n\nEski Unity sürümlerinde `linearVelocity` yerine `velocity` kullanılır."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal'da BlueprintCallable TakeDamage fonksiyonu olan health component oluştur.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal C++ derleme hatalarında nasıl debug yapılır?", "answer": "Önce derleyicinin verdiği ilk hataya bak. Unreal build çıktısında sonraki hatalar çoğu zaman ilk hatanın sonucudur.\n\nKontrol listesi:\n\n- Header dosyasında `GENERATED_BODY()` doğru yerde mi?\n- `.generated.h` include'u en son include mu?\n- Sınıf adı dosya ve constructor adıyla uyumlu mu?\n- Eksik module dependency var mı?\n- Pointer tipleri forward declaration ile yetiyor mu, yoksa include gerekli mi?\n\nReflection hatalarında Unreal Editor'ü kapatıp temiz build almak da gerekebilir."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de null reference exception nasıl debug edilir?", "answer": "`NullReferenceException`, null olan bir değişkenin alanına veya metoduna eriştiğini gösterir. Inspector referansı atanmış mı, `GetComponent` sonucu null mı ve obje sahnede aktif mi kontrol et.\n\n```csharp\n[SerializeField] private Transform target;\n\nprivate void Awake()\n{\n if (target == null)\n {\n Debug.LogError(\"Target referansı Inspector'dan atanmadı.\", this);\n enabled = false;\n return;\n }\n}\n```\n\nHata satırına çift tıkla, o satırdaki her referansı tek tek kontrol et."} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kısa açıkla: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "Kod örneğiyle göster: Unreal'da Character hareket kodunu temiz şekilde göster.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Kısa açıkla: Unity için basit player movement yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de ScriptableObject ile item tanımı nasıl yapılır?", "answer": "ScriptableObject, item verisini prefab veya sahne bağımlılığı olmadan saklamak için uygundur.\n\n```csharp\nusing UnityEngine;\n\n[CreateAssetMenu(menuName = \"Game/Item\")]\npublic class ItemDefinition : ScriptableObject\n{\n public string id;\n public string displayName;\n public Sprite icon;\n public int maxStack = 1;\n}\n```\n\nProject penceresinde sağ tıklayıp `Create > Game > Item` ile asset oluşturabilirsin. Runtime state'i ScriptableObject üzerinde değil, inventory component içinde tutulmalıdır."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unreal", "instruction": "En temiz mimariyle öner: UE C++ UActorComponent tabanlı health component örneği ver.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de ScriptableObject ile item tanımı nasıl yapılır?", "answer": "ScriptableObject, item verisini prefab veya sahne bağımlılığı olmadan saklamak için uygundur.\n\n```csharp\nusing UnityEngine;\n\n[CreateAssetMenu(menuName = \"Game/Item\")]\npublic class ItemDefinition : ScriptableObject\n{\n public string id;\n public string displayName;\n public Sprite icon;\n public int maxStack = 1;\n}\n```\n\nProject penceresinde sağ tıklayıp `Create > Game > Item` ile asset oluşturabilirsin. Runtime state'i ScriptableObject üzerinde değil, inventory component içinde tutulmalıdır."} {"domain": "unreal", "instruction": "Unreal Engine C++ ile basit Character hareket sınıfı yaz.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: MonoBehaviour içinde WASD movement nasıl yazılır?", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unreal", "instruction": "En temiz mimariyle öner: Unreal C++ ile Health component yaz.", "answer": "Reusable health için `UActorComponent` uygundur.\n\n```cpp\nUCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))\nclass UHealthComponent : public UActorComponent\n{\n GENERATED_BODY()\n\npublic:\n UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=\"Health\")\n float MaxHealth = 100.0f;\n\n UPROPERTY(BlueprintReadOnly, Category=\"Health\")\n float CurrentHealth = 100.0f;\n\n UFUNCTION(BlueprintCallable, Category=\"Health\")\n void ApplyDamage(float Amount)\n {\n CurrentHealth = FMath::Clamp(CurrentHealth - Amount, 0.0f, MaxHealth);\n if (CurrentHealth <= 0.0f)\n {\n // Death event veya BlueprintImplementableEvent çağrılabilir.\n }\n }\n};\n```\n\nDaha gelişmiş sürümde multicast delegate ile UI ve gameplay sistemlerine haber verilir."} {"domain": "unity", "instruction": "Yeni başlayan biri için anlat: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unreal", "instruction": "Hata ayıklama açısından açıkla: Unreal'da Character hareket kodunu temiz şekilde göster.", "answer": "Enhanced Input kurulu projelerde input binding genelde Character içinde yapılır. Aşağıdaki iskelet hareket fonksiyonlarını gösterir.\n\n```cpp\n// MyPlayerCharacter.h\n#pragma once\n\n#include \"CoreMinimal.h\"\n#include \"GameFramework/Character.h\"\n#include \"MyPlayerCharacter.generated.h\"\n\nUCLASS()\nclass AMyPlayerCharacter : public ACharacter\n{\n GENERATED_BODY()\n\npublic:\n AMyPlayerCharacter();\n\nprotected:\n virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;\n\n void MoveForward(float Value);\n void MoveRight(float Value);\n};\n```\n\n```cpp\n// MyPlayerCharacter.cpp\n#include \"MyPlayerCharacter.h\"\n\nAMyPlayerCharacter::AMyPlayerCharacter()\n{\n PrimaryActorTick.bCanEverTick = true;\n}\n\nvoid AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)\n{\n Super::SetupPlayerInputComponent(PlayerInputComponent);\n PlayerInputComponent->BindAxis(\"MoveForward\", this, &AMyPlayerCharacter::MoveForward);\n PlayerInputComponent->BindAxis(\"MoveRight\", this, &AMyPlayerCharacter::MoveRight);\n}\n\nvoid AMyPlayerCharacter::MoveForward(float Value)\n{\n AddMovementInput(GetActorForwardVector(), Value);\n}\n\nvoid AMyPlayerCharacter::MoveRight(float Value)\n{\n AddMovementInput(GetActorRightVector(), Value);\n}\n```"} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de Health component yaz.", "answer": "Health'i ayrı component yapmak Player, enemy ve kırılabilir objelerde yeniden kullanımı kolaylaştırır.\n\n```csharp\nusing System;\nusing UnityEngine;\n\npublic class Health : MonoBehaviour\n{\n [SerializeField] private int maxHealth = 100;\n\n public int Current { get; private set; }\n public event Action Changed;\n public event Action Died;\n\n private void Awake()\n {\n Current = maxHealth;\n }\n\n public void TakeDamage(int amount)\n {\n Current = Mathf.Max(Current - amount, 0);\n Changed?.Invoke(Current, maxHealth);\n\n if (Current == 0)\n Died?.Invoke();\n }\n}\n```"} {"domain": "unity", "instruction": "En temiz mimariyle öner: Unity'de WASD ile CharacterController kullanan FPS hareket kodu yaz.", "answer": "Bu script Player objesine eklenir. Objede `CharacterController` component'i olmalı.\n\n```csharp\nusing UnityEngine;\n\n[RequireComponent(typeof(CharacterController))]\npublic class PlayerMovement : MonoBehaviour\n{\n [SerializeField] private float speed = 5f;\n [SerializeField] private float gravity = -9.81f;\n\n private CharacterController controller;\n private Vector3 velocity;\n\n private void Awake()\n {\n controller = GetComponent();\n }\n\n private void Update()\n {\n float x = Input.GetAxisRaw(\"Horizontal\");\n float z = Input.GetAxisRaw(\"Vertical\");\n\n Vector3 move = transform.right * x + transform.forward * z;\n controller.Move(move.normalized * speed * Time.deltaTime);\n\n if (controller.isGrounded && velocity.y < 0f)\n velocity.y = -2f;\n\n velocity.y += gravity * Time.deltaTime;\n controller.Move(velocity * Time.deltaTime);\n }\n}\n```\n\nYeni Input System kullanıyorsan `Input.GetAxisRaw` yerine input action callback'leriyle vektör okuyabilirsin."} {"domain": "unity", "instruction": "Kısa açıkla: Unity'de null reference exception nasıl debug edilir?", "answer": "`NullReferenceException`, null olan bir değişkenin alanına veya metoduna eriştiğini gösterir. Inspector referansı atanmış mı, `GetComponent` sonucu null mı ve obje sahnede aktif mi kontrol et.\n\n```csharp\n[SerializeField] private Transform target;\n\nprivate void Awake()\n{\n if (target == null)\n {\n Debug.LogError(\"Target referansı Inspector'dan atanmadı.\", this);\n enabled = false;\n return;\n }\n}\n```\n\nHata satırına çift tıkla, o satırdaki her referansı tek tek kontrol et."}