SWG
Decapat
- Katılım
- 17 Ekim 2021
- Mesajlar
- 59
- Çözümler
- 1
Daha fazla
- Cinsiyet
- Erkek
Merhaba, Unity2D üzerinde oyun yapımını öğrenmek amaçlı proje oluşturdum.
Oyunun mantığı basit; merkezde olan bir top var ve etraftan gelen düşmanlara ateş ederek öldürecek.
Mouse ile topu 360 derece döndürmek için araştırma yapıp Z rotasyonunda dönmesini sağladım. Fakat mermi spawn mantığını bir türlü çözemedim.
Sorun şu: Aşağıdaki resimde olan yuvarlak şey silah ve ucundaki üçgen ise baktığı yönü ifade ediyor. Aşağıdaki kodlardan anlaşıldığı ve yukarıda bahsettiğim üzere bu top sadece Z rotasyonunda hareket gerçekleştiriyor. İstediğim şey ise topun Z rotasyonu fark etmekzsizin mouse0 tuşuna bastığımda üçgenin hemen önünde mermi spawnlanmasını istiyorum. Kısacası silahın Z rotasyonunu baz alarak merminin spawn pozisyonunu belirlemek istiyorum. Ama bunu nasıl yapacağımı anlayamadım biraz araştırdım bir yanıt da bulamadım. Anlayan arkadaşlar ilgilenebilirse güzel olur, teşekkürler.
Oyunun mantığı basit; merkezde olan bir top var ve etraftan gelen düşmanlara ateş ederek öldürecek.
Mouse ile topu 360 derece döndürmek için araştırma yapıp Z rotasyonunda dönmesini sağladım. Fakat mermi spawn mantığını bir türlü çözemedim.
Sorun şu: Aşağıdaki resimde olan yuvarlak şey silah ve ucundaki üçgen ise baktığı yönü ifade ediyor. Aşağıdaki kodlardan anlaşıldığı ve yukarıda bahsettiğim üzere bu top sadece Z rotasyonunda hareket gerçekleştiriyor. İstediğim şey ise topun Z rotasyonu fark etmekzsizin mouse0 tuşuna bastığımda üçgenin hemen önünde mermi spawnlanmasını istiyorum. Kısacası silahın Z rotasyonunu baz alarak merminin spawn pozisyonunu belirlemek istiyorum. Ama bunu nasıl yapacağımı anlayamadım biraz araştırdım bir yanıt da bulamadım. Anlayan arkadaşlar ilgilenebilirse güzel olur, teşekkürler.
C#:
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
using UnityEngine.UIElements;
public class main : MonoBehaviour
{
[SerializeField] GameObject gun,bullet;
private Vector3 mousePos, dir;
float rotateZ;
private void Update()
{
mousePos = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, transform.position.z));
dir = mousePos - gun.transform.position;
rotateZ = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg;
gun.transform.rotation = Quaternion.Euler(0,0,rotateZ);
if (Input.GetMouseButtonDown(0))
{
shoot();
}
}
void shoot()
{
Instantiate(bullet,gun.transform.position,Quaternion.identity);
}
}