Wie kann ich Intervalle beibehalten, wenn Projektile in Bewegung erschießen?C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Wie kann ich Intervalle beibehalten, wenn Projektile in Bewegung erschießen?

Post by Anonymous »

Ich erstelle ein Flugzeug-Schießspiel mit einem Top-Down-Blick wie im Spiel von 1942. Es ist wie ein Doppler -Effekt. Wie kann ich das beheben? Coroutine über einen bestimmten Zeitraum die Bullet -Prefab der Bullet -Prefab. Unten ist ein Ausschnitt aus dem Code für die Bewegung und die Bullet -Generierung des Spielers.

Code: Select all

void FixedUpdate()
{
Vector2 desiredVelocity = rawInput * moveSpeed;
Vector2 nextPos = rb.position + desiredVelocity * Time.fixedDeltaTime;

float clampedX = Mathf.Clamp(nextPos.x, minBounds.x + paddingLeft, maxBounds.x - paddingRight);
float clampedY = Mathf.Clamp(nextPos.y, minBounds.y + paddingBottom, maxBounds.y - paddingTop);
Vector2 clampedPos = new Vector2(clampedX, clampedY);

Vector2 correctedVelocity = (clampedPos - rb.position) / Time.fixedDeltaTime;
rb.velocity = correctedVelocity;
}
Bullet -Instantiationscode im Shooter

Code: Select all

IEnumerator FireContinuously()
{
while (true)
{
GameObject instance = Instantiate(projectilePrefab,
transform.position,
Quaternion.identity);

AudioPlayer.Instance.PlayShootingClip();

Rigidbody2D rb = instance.GetComponent();
if (rb != null)
rb.velocity = transform.up * projectileSpeed;
yield return new WaitForSeconds(firingRate);
}
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post