Unity topu fırlatma kodu

Katılım
19 Haziran 2015
Mesajlar
39
Daha fazla  
Cinsiyet
Erkek
Ben hedef vurmaya dayalı bir oyun yapıyorum. Mesela beyzbol topunu atmak istediğimiz yere ve uzaklığa göre nasıl kodlarız? Aynı şekilde yavaş atmak veya hızlı atmayı nasıl yaparız? Kısaca “Hit ve knock down” oyunundaki gibi nasıl yaparız?

Benim yazdığım kod bu;

Kod:
using UnityEngine;



public class Firlatici : MonoBehaviour

{

    private Camera kamera;

    private Rigidbody rb;



    public float hiz = 10f;



    private void Start()

    {

        kamera = Camera.main;

        rb = GetComponent<Rigidbody>();



        rb.drag = 0f;

        rb.angularDrag = 0f;

        rb.useGravity = true;

        rb.isKinematic = true;

    }



    private void Update()

    {

        if( Input.GetMouseButtonDown( 0 ) )

        {

            Ray ray = kamera.ScreenPointToRay( Input.mousePosition );

            RaycastHit hit;



            if( Physics.Raycast( ray, out hit ) )

            {

                Vector3 hedefKonum = hit.point + hit.normal * transform.localScale.x * 0.5f;

                Vector3 mevcutKonum = transform.position;

                Vector3 yon = hedefKonum - mevcutKonum;



                float sure = new Vector3( yon.x, 0f, yon.z ).magnitude / hiz;

                float dikeyHiz = yon.y / sure - Physics.gravity.y * sure * 0.5f;



                Vector3 hareket = new Vector3( yon.x, 0f, yon.z ).normalized * hiz;

                hareket.y = dikeyHiz;



                rb.isKinematic = false;

                rb.velocity = hareket;

            }

        }

    }

}

Ama sadece hedefin üzerine tıkladığında çalışıyor. Ben topu kendi istediğim yere atmak istiyorum. Mobilde kullanacağım.
 
Son düzenleyen: Moderatör:
Uyarı! Bu konu 7 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni konular

Geri
Yukarı