Furkan Onur Bekler
Hectopat
- 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;
Ama sadece hedefin üzerine tıkladığında çalışıyor. Ben topu kendi istediğim yere atmak istiyorum. Mobilde kullanacağım.
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: