"CS0019 '*' işleci'Vector3' türündeki işlenenlere uygulanamaz" hatası

gcmsx

Centipat
Katılım
23 Mayıs 2022
Mesajlar
35
Selam Unity C#'da bir araba mekaniği yazmıştım ve bu kodu Unity Asset Store'da olan Joystick Pack kodları ile birleştirecektim ancak 27. satırdaki " rb. AddForce(direction * Speed * Time. FixedDeltaTime, ForceMode. VelocityChange);" kısmında Speed değişkenini Vector ile değiştirince "CS0019 '*' işleci 'Vector3' ve 'Vector3' türündeki işlenenlere uygulanamaz" hatası alıyorum. Bu hatanın bir çözümü ya da alternatifi var mıdır? Şimdiden teşekkürler.

C#:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class JoystickPlayerExample : MonoBehaviour
{
 [SerializeField] float MinSpeed;
 [SerializeField] float MaxSpeed;
 [SerializeField] float dragAmount;
 [SerializeField] float steerAngle;
 [SerializeField] float Traction;

 Vector3 _MoveVec;
 public float speed;
 public VariableJoystick variableJoystick;
 public Rigidbody rb;

 public void FixedUpdate()
 {
 _MoveVec += transform.forward * MinSpeed * Time.deltaTime;
 transform.position += _MoveVec * Time.deltaTime;

 transform.Rotate(Vector3.up * Input.GetAxis("Vertical") * steerAngle * Time.deltaTime * _MoveVec.magnitude); //Dönüş , manevra açısı

 //joystick
 Vector3 direction = Vector3.forward * variableJoystick.Vertical + Vector3.right * variableJoystick.Horizontal;
 rb.AddForce(direction * speed * Time.fixedDeltaTime, ForceMode.VelocityChange);
 //joystick

 _MoveVec *= dragAmount; //Sürtünme kuvveti
 _MoveVec = Vector3.ClampMagnitude(_MoveVec, MaxSpeed); //Minimum hızdan maksimum hıza çıkış
 _MoveVec = Vector3.Lerp(_MoveVec.normalized, transform.forward, Traction * Time.deltaTime) * _MoveVec.magnitude;

 }
}
 
Son düzenleyen: Moderatör:
Vector ile vectorü çarpamazsın. Belki direction * vector.magnitude işini görebilir. Tam olarak ne yapmaya çalıştığını söylersen yardımı olabilirim.
 
Unity'nin içindeki Joystick Pack ile kendi yazdığım mekanik kodlarını birleştirmeye çalıştım.
Dostum iki vectoru o şekilde çarpamazsın tam olarak ne yapmaya çalıştığını da söylemedin senin yapmaya çalıştığın mekanik ne? Dediğimi denedin mi? Çok az bilgi veriyorsun.
 
Dostum iki vectoru o şekilde çarpamazsın tam olarak ne yapmaya çalıştığını da söylemedin senin yapmaya çalıştığın mekanik ne? Dediğimi denedin mi? Çok az bilgi veriyorsun.
Basit bir drift arabası mekaniği yazdım mekaniğin içinde arabanın sürtünme kuvveti dönüş açısı çekiş gücü var ancak bu mekaniği Unity Joystick pack ile birleştirmek isteyince olmadı,direction Vector'ü joystick pack'e ait olan vector , _MoveVec Vector'ü benim yazdığım mekaniğin vectoru. Zaten şu an mekanik çalışıyor tek yapmaya çalıştığım bu mekaniği dokunmatiğe uyarlamak. Altlı üstlü 2 "//Joystick" yazısının arasındaki kodlar joystick pack'e ait olan Player Example kodları .
 
_MoveVec += transform.forward * MinSpeed * Time.deltaTime;
Bu satırı
_MoveVec += joystick.direction* MinSpeed * Time.deltaTime;

ile değiştirmeyi dene
Basit bir drift arabası mekaniği yazdım mekaniğin içinde arabanın sürtünme kuvveti dönüş açısı çekiş gücü var ancak bu mekaniği Unity Joystick pack ile birleştirmek isteyince olmadı,direction Vector'ü joystick pack'e ait olan vector , _MoveVec Vector'ü benim yazdığım mekaniğin vectoru. Zaten şu an mekanik çalışıyor tek yapmaya çalıştığım bu mekaniği dokunmatiğe uyarlamak. Altlı üstlü 2 "//Joystick" yazısının arasındaki kodlar joystick pack'e ait olan Player Example kodları .
 
_MoveVec += transform.forward * MinSpeed * Time.deltaTime;
Bu satırı
_MoveVec += joystick.direction* MinSpeed * Time.deltaTime;

ile değiştirmeyi dene
Yok sonuç aymı galiba joystick pack ile bu durumdan kurtulmak mümkün değil gibi Joystick pac dışında bir alternatifiniz var mıdır acaba ?
 
Hocam ne yapmaya çalıştığınızı anlayamadım.

Kodu okuduğumda araba sürekli olarak ileri doğru gidiyor ve sağ sol tuşlarıyla da dönüyor.
Bir de bunlara ek olarak joystickten gelen veriye göre force uyguluyorsunuz.

Araba sürekli ileri gitsin ben joystick ile sağa sola döndüreyim istiyorsanız Input.GetAxis("Vertical") yerine joystick.direction.x yazmanız gerekiyor.

transform.position += _MoveVec * Time.deltaTime;

Ayrıca bu satırı silip

rb.AddForce yerine rb.RelativeAddforce yazmanız gerekiyor. Bu şekilde denerseniz olacaktır.
rb.RelativeAddForce(vector3.forward*speed) şeklinde deneyin
 
Hocam ne yapmaya çalıştığınızı anlayamadım.

Kodu okuduğumda araba sürekli olarak ileri doğru gidiyor ve sağ sol tuşlarıyla da dönüyor.
Bir de bunlara ek olarak joystickten gelen veriye göre Force uyguluyorsunuz.

Araba sürekli ileri gitsin ben joystick ile sağa sola döndüreyim istiyorsanız Input. GetAxis("Vertical") yerine joystick. Direction. X yazmanız gerekiyor.

Transform. Position += _MoveVec * Time. DeltaTime;

Ayrıca bu satırı silip

Rb. AddForce yerine rb. RelativeAddforce yazmanız gerekiyor. Bu şekilde denerseniz olacaktır.
Rb. RelativeAddForce(Vector3.forward*speed) şeklinde deneyin

Yapmaya çalıştığım şey araba hareket edecek kullanıcı da sağa ve sola doğru döndürecek ama yine kodlar çalışmıyor derleyici hata vermiyor ama karakter sabit duruyor bende anlamadım problemin ne olduğunu yine galiba baştan eğer bir sonuca varırsam buraya yazarı başlayacağım yardımınız için teşekkürler.

 

Technopat Haberler

Geri
Yukarı