Şimdi Ara

Oyuncuyu Fare Yönüne Doğru Döndürme

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
2
Cevap
0
Favori
244
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Herkese merhaba,

    2D düzlemde 3D obje üstünde çalışıyorum, oyuncu fare ile sağa sola yukarı aşağı gidiyor.

    Fare sağa doğru hareket etmeye başlayınca oyuncu 1 seferliğine sağa dönsün, fare sola hareket etmeye başlayınca oyuncu yine bir seferliğine sola dönsün istiyorum. (Bir seferden kastım fare hareket etmeye devam ettikçe dönme devam etmesin, mesela karakterin Y ekseni 0(objeme göre sol oluyor), ya da 180(objeme göre sol oluyor) değerinde kalsın.

    Önceki kodumda bunu başardım ama kullandığım method time.deltaTime için uygun değildi birden dönüyordu, ben biraz daha yavaş dönsün istedim.


    Şu an ki kodumda amacıma bayağı yaklaştım ama bu sefer de karakter sola doğru dönerken 90 derecede takılı kalıyor. Eminim çok basit bir çözümü vardır ama günlerdir bu problemde takılı kaldım.

    Neyi yanlış yapıyorum ya da olaya başka şekilde mi yaklaşmam gerek?

    using UnityEngine;


    public class Player : MonoBehaviour
    {
    Controls inputActions;

    Vector2 moveInput;
    private Vector2 moveDirection;
    public float speed = 1.5f;
    Vector2 lookAngles;

    private void OnEnable()
    {
    inputActions.Enable();
    }

    private void OnDisable()
    {
    inputActions.Disable();
    }

    void Awake()
    {
    inputActions = new Controls();
    inputActions.Player.Movement.performed += ctx => moveInput = ctx.ReadValue<Vector2>();
    Cursor.visible = false;
    }

    void Update()
    {
    lookAngles.x += (-moveDirection.x * 150f) * Time.deltaTime;
    lookAngles.x = Mathf.Clamp(lookAngles.x, 0f, 180f);
    transform.localRotation = Quaternion.Euler(0f, lookAngles.x, 0f);



    moveDirection = new Vector2(moveInput.x, moveInput.y);

    moveDirection = transform.TransformDirection(moveDirection);

    Movement(moveDirection);
    }

    void Movement(Vector2 moveDirection)
    {
    transform.Translate(moveDirection * speed * Time.deltaTime * 0.5f);
    }



    < Bu mesaj bu kişi tarafından değiştirildi Marshall-Bruce -- 30 Haziran 2020; 21:7:37 >







  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.