Topun çarptığı anda aktif olan scripti ve hareket scriptinizi atar mısınız
[CODE lang="csharp" title="PlayerController"]using DG.Tweening;
using UnityEngine.UI;
public class PlayerConroller : MonoBehaviour
{
Rigidbody2D playerRb;
public float moveSpeed,jumpSpeed=1f,jumpFrequency=1f,nextJumpTime;
//jumpfrequency benim ne kadar sıklıkla zıplayabileceiğimi söyler misal her bir saniyede 1 defa zıplasın.
//next jump time benim bir sonraki zıplayaşımın zamanın bana söylecek.
public bool itsGrounded = false;
bool facingRight = true;
public bool basincbastinMi=false;
public bool ahsahBasıncBastinMi = false;
public bool keskinAletuzerindeMiyim = false;
public Transform groundCheckPosition;
public float groundCheckRadius;
public float speed;
public LayerMask groundCheckLayer;
public LayerMask groundCheckLayerBasinc;
public LayerMask groundCheckLayerAhsapbasinc;
public LayerMask groundCheckLayerkeskinAlet;
public AudioSource audioSource;
public AudioClip audioClip;
public AudioClip basincSesi;
public GameObject basincPlakası;
void Start()
{
audioSource = GetComponent<AudioSource>();
keskinAletuzerindeMiyim = false;
ahsahBasıncBastinMi = false;
basincbastinMi = false;
itsGrounded = false;
facingRight = true;
playerRb = GetComponent<Rigidbody2D>();
}
void Update()
{
transform.position += new Vector3(speed, 0f, 0f) * Time.deltaTime * 1;
OnGroundCheck();
//if (itsGrounded==true && (nextJumpTime<Time.timeSinceLevelLoad))
//{
// nextJumpTime = Time.timeSinceLevelLoad + jumpFrequency;
// Zıpla();
//}
}
private void OnCollisionEnter2D(Collision2D collision)
{
if (basincbastinMi && (nextJumpTime < Time.timeSinceLevelLoad)) //basınç bastın mı true ise o zaman yukarı kuvvet vericez.
{
nextJumpTime = Time.timeSinceLevelLoad + jumpFrequency;
audioSource.PlayOneShot(basincSesi);
GucVer();
}
if (collision.gameObject.tag=="ahsapBlock" && (nextJumpTime < Time.timeSinceLevelLoad))
{
nextJumpTime = Time.timeSinceLevelLoad + jumpFrequency;
audioSource.PlayOneShot(basincSesi);
ahsahBasıncBastinMi = true;
StartCoroutine(ahsapBasıncKontrol());
GucVer2();
}
}
private void OnCollisionExit2D(Collision2D collision)
{
if (collision.gameObject.tag == "mermi")
{
playerRb.AddForce(new Vector2(0f, 0f));
}
}
void flipFace()
{
facingRight = !facingRight;
Vector3 tempLocalScale = transform.localScale;
tempLocalScale.x *= -1;
transform.localScale = tempLocalScale;
}
void OnGroundCheck()
{
itsGrounded=Physics2D.OverlapCircle(groundCheckPosition.position,groundCheckRadius,groundCheckLayer);
basincbastinMi=Physics2D.OverlapCircle(groundCheckPosition.position, groundCheckRadius, groundCheckLayerBasinc);
//ahsahBasıncBastinMi = Physics2D.OverlapCircle(groundCheckPosition.position, groundCheckRadius, groundCheckLayerAhsapbasinc);
keskinAletuzerindeMiyim = Physics2D.OverlapCircle(groundCheckPosition.position, groundCheckRadius, groundCheckLayerkeskinAlet);
}
void GucVer()
{
playerRb.AddForce(new Vector2(0f, 800f));
}
void GucVer2()
{
playerRb.AddForce(new Vector2(0f, 800f));
}
IEnumerator ahsapBasıncKontrol()
{
yield return new WaitForSeconds(2f);
ahsahBasıncBastinMi = false;
}
public void SagaGit()
{
speed = 10;
if (speed==10&& !facingRight)
{
flipFace();
}
}
public void solaGit()
{
speed = -10;
if (speed == -10 && facingRight)
{
flipFace();
}
}
public void dur()
{
speed = 0;
}
public void Zıpla()
{
if (itsGrounded==true && (nextJumpTime < Time.timeSinceLevelLoad))
{
audioSource.PlayOneShot(audioClip);
nextJumpTime = Time.timeSinceLevelLoad + jumpFrequency;
playerRb.AddForce(new Vector2(0f, 12f), ForceMode2D.Impulse);
}
}
}[/CODE]
[CODE lang="csharp" title="mermiManager"]using DG.Tweening;
using UnityEngine.UI;
public class mermiManager : MonoBehaviour
{
public Transform mermi;
public Transform fireParticle;
Transform muzzle;
Transform tempBullet;
public Transform MainCamera;
public AudioClip audioClip;
public AudioSource audioSource;
private void Start()
{
audioSource = GetComponent<AudioSource>();
muzzle = transform.GetChild(0);
StartCoroutine(mermiOlusmaRoutine());
}
void mermiOlustur()
{
audioSource.PlayOneShot(audioClip, 0.1f);
tempBullet = Instantiate(mermi, muzzle.position, Quaternion.identity);
tempBullet.GetComponent<RectTransform>().DOLocalMoveX(-10f, 3f);
Instantiate(fireParticle, muzzle.position, Quaternion.identity);
}
IEnumerator mermiOlusmaRoutine()
{
while (true)
{
yield return new WaitForSeconds(2f);
mermiOlustur();
yield return new WaitForSeconds(2f);
}
}
}[/CODE]
[CODE lang="csharp" title="PlayerController"]using DG.Tweening;
using UnityEngine.UI;
public class PlayerConroller : MonoBehaviour
{
Rigidbody2D playerRb;
public float moveSpeed,jumpSpeed=1f,jumpFrequency=1f,nextJumpTime;
//jumpfrequency benim ne kadar sıklıkla zıplayabileceiğimi söyler misal her bir saniyede 1 defa zıplasın.
//next jump time benim bir sonraki zıplayaşımın zamanın bana söylecek.
public bool itsGrounded = false;
bool facingRight = true;
public bool basincbastinMi=false;
public bool ahsahBasıncBastinMi = false;
public bool keskinAletuzerindeMiyim = false;
public Transform groundCheckPosition;
public float groundCheckRadius;
public float speed;
public LayerMask groundCheckLayer;
public LayerMask groundCheckLayerBasinc;
public LayerMask groundCheckLayerAhsapbasinc;
public LayerMask groundCheckLayerkeskinAlet;
public AudioSource audioSource;
public AudioClip audioClip;
public AudioClip basincSesi;
public GameObject basincPlakası;
void Start()
{
audioSource = GetComponent<AudioSource>();
keskinAletuzerindeMiyim = false;
ahsahBasıncBastinMi = false;
basincbastinMi = false;
itsGrounded = false;
facingRight = true;
playerRb = GetComponent<Rigidbody2D>();
}
void Update()
{
transform.position += new Vector3(speed, 0f, 0f) * Time.deltaTime * 1;
OnGroundCheck();
//if (itsGrounded==true && (nextJumpTime<Time.timeSinceLevelLoad))
//{
// nextJumpTime = Time.timeSinceLevelLoad + jumpFrequency;
// Zıpla();
//}
}
private void OnCollisionEnter2D(Collision2D collision)
{
if (basincbastinMi && (nextJumpTime < Time.timeSinceLevelLoad)) //basınç bastın mı true ise o zaman yukarı kuvvet vericez.
{
nextJumpTime = Time.timeSinceLevelLoad + jumpFrequency;
audioSource.PlayOneShot(basincSesi);
GucVer();
}
if (collision.gameObject.tag=="ahsapBlock" && (nextJumpTime < Time.timeSinceLevelLoad))
{
nextJumpTime = Time.timeSinceLevelLoad + jumpFrequency;
audioSource.PlayOneShot(basincSesi);
ahsahBasıncBastinMi = true;
StartCoroutine(ahsapBasıncKontrol());
GucVer2();
}
}
private void OnCollisionExit2D(Collision2D collision)
{
if (collision.gameObject.tag == "mermi")
{
playerRb.AddForce(new Vector2(0f, 0f));
}
}
void flipFace()
{
facingRight = !facingRight;
Vector3 tempLocalScale = transform.localScale;
tempLocalScale.x *= -1;
transform.localScale = tempLocalScale;
}
void OnGroundCheck()
{
itsGrounded=Physics2D.OverlapCircle(groundCheckPosition.position,groundCheckRadius,groundCheckLayer);
basincbastinMi=Physics2D.OverlapCircle(groundCheckPosition.position, groundCheckRadius, groundCheckLayerBasinc);
//ahsahBasıncBastinMi = Physics2D.OverlapCircle(groundCheckPosition.position, groundCheckRadius, groundCheckLayerAhsapbasinc);
keskinAletuzerindeMiyim = Physics2D.OverlapCircle(groundCheckPosition.position, groundCheckRadius, groundCheckLayerkeskinAlet);
}
void GucVer()
{
playerRb.AddForce(new Vector2(0f, 800f));
}
void GucVer2()
{
playerRb.AddForce(new Vector2(0f, 800f));
}
IEnumerator ahsapBasıncKontrol()
{
yield return new WaitForSeconds(2f);
ahsahBasıncBastinMi = false;
}
public void SagaGit()
{
speed = 10;
if (speed==10&& !facingRight)
{
flipFace();
}
}
public void solaGit()
{
speed = -10;
if (speed == -10 && facingRight)
{
flipFace();
}
}
public void dur()
{
speed = 0;
}
public void Zıpla()
{
if (itsGrounded==true && (nextJumpTime < Time.timeSinceLevelLoad))
{
audioSource.PlayOneShot(audioClip);
nextJumpTime = Time.timeSinceLevelLoad + jumpFrequency;
playerRb.AddForce(new Vector2(0f, 12f), ForceMode2D.Impulse);
}
}
}[/CODE]
[CODE lang="csharp" title="mermiManager"]using DG.Tweening;
using UnityEngine.UI;
public class mermiManager : MonoBehaviour
{
public Transform mermi;
public Transform fireParticle;
Transform muzzle;
Transform tempBullet;
public Transform MainCamera;
public AudioClip audioClip;
public AudioSource audioSource;
private void Start()
{
audioSource = GetComponent<AudioSource>();
muzzle = transform.GetChild(0);
StartCoroutine(mermiOlusmaRoutine());
}
void mermiOlustur()
{
audioSource.PlayOneShot(audioClip, 0.1f);
tempBullet = Instantiate(mermi, muzzle.position, Quaternion.identity);
tempBullet.GetComponent<RectTransform>().DOLocalMoveX(-10f, 3f);
Instantiate(fireParticle, muzzle.position, Quaternion.identity);
}
IEnumerator mermiOlusmaRoutine()
{
while (true)
{
yield return new WaitForSeconds(2f);
mermiOlustur();
yield return new WaitForSeconds(2f);
}
}
}[/CODE]
Top oluşturma scriptimi attım top çarptığında anda yok ediyorum onu mu atıyım size?
Karakteriniz sağa sola istemsiz hareket ederken üzerindeki Rigidbody ye bakabilir misiniz? Velocity si mi oynuyor yoksa sadece Transform mu
İstemsiz harekette Velocity de değişkenlik gösteriyor. Sonra bir yere çarpınca velocity x sıfırlanıyor.
Scriptinizi atarsanız daha sağlıklı yardım alabilirsiniz. Frictionu 0 yaptığınız için muhtemelen uygulanan kuvvetin etkisiyle hareket etmeye devam ediyor olabilir. Topun colliderı var mı?
Bu iki kısma değince de istemsiz hareket ediyor. Materialini kaldırdım.