Unity 3D TR Forum

Orjinalini görmek için tıklayınız: Karakter Kontrolde ray çizmesinde sorun var
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Bir kod yazdım karater kamera dönmesiyle alakalı fakat mouse imlecimi ekranın alt tarafına getirince karakter bir yöne dönüp doğrusal yürümeye başlıyor . İmleç ekranın üst tarafındayken imlecimin olduğu yöne dönebiliyor . 2 saattir bununla uğraşıyorum ama bir türlü çözemedim. Kodlarımı düzenledim fakat aynı sorunu yaşamaya devam ediyorum . Collider görmediği için mi çizemiyor acaba diye düşündüm . Karakteri küçük bir kutuya koydum ama yine aynı sorunu yaşamaya devam ediyorum . yardımcı olabilir misiniz ?




Kodu paylaşabilir misin?
(22-03-2020, Saat: 14:54)mtat0640 Nickli Kullanıcıdan Alıntı: Linkleri görüntüleyebilmek için Kayıt ol manız veya Giriş yapmanız gerekiyor.Anlayışınız için teşekkürler.!Kodu paylaşabilir misin?

Kod:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class KarakteriKontrol : MonoBehaviour
{
   float Horizontal = 0, Vertical = 0;

   public CursorLockMode CursorLockMode { get; private set; }

   Animator animator;
   Rigidbody fizik;
   public GameObject kafakamerasi;
   Vector3 kameraArasimesafe;
   RaycastHit hit;
   float KafarotUstAlt = 0, KafarotSagSol = 0;
   public float hiz = 0;

   void Awake()
   {
       Cursor.visible = false;
       CursorLockMode = CursorLockMode.Locked;
       animator = GetComponent<Animator>();
       fizik = GetComponent<Rigidbody>();
       kameraArasimesafe = kafakamerasi.transform.position - transform.position;
   }
   private void Update()
   {
       if (Input.GetKeyDown(KeyCode.LeftShift))
       {
           hiz *= 2;

           animator.SetBool("runparam", true);
       }
       else if (Input.GetKeyUp(KeyCode.LeftShift))
       {
           hiz /= 2;
           animator.SetBool("runparam", false);
       }
           
       
   }

   void FixedUpdate()
   {
       Haraket();
       Rotasyon();
       animator.SetFloat("HorizontalParam", Horizontal);
       animator.SetFloat("VerticalParam", Vertical);

   }

   
   void Haraket()
   {
       Horizontal = Input.GetAxis("Horizontal");
       Vertical = Input.GetAxis("Vertical");
       Vector3 vec = new Vector3(Horizontal, 0, Vertical);
       vec = transform.TransformDirection(vec);
       vec.Normalize();
       fizik.position += vec*Time.deltaTime * hiz;

   }
   void Rotasyon()
   {
       kafakamerasi.transform.position = transform.position + kameraArasimesafe;
       KafarotUstAlt += Input.GetAxis("Mouse Y") * Time.fixedDeltaTime * -150;
       KafarotSagSol += Input.GetAxis("Mouse X") * Time.fixedDeltaTime * 150;
       KafarotUstAlt = Mathf.Clamp(KafarotUstAlt, -25, +25);      
       kafakamerasi.transform.rotation = Quaternion.Euler(KafarotUstAlt, KafarotSagSol, transform.localEulerAngles.z);

       

       if (Horizontal !=0 || Vertical !=0)
       {
           Physics.Raycast(Vector3.zero, kafakamerasi.transform.GetChild(0).forward, out hit);
           transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.LookRotation(new Vector3(hit.point.x, 0, hit.point.z)), 0.3f);
           Debug.DrawLine(Vector3.zero, hit.point);
       }

   }
}