Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите с Unity2D

Виталий Ласкин Ученик (105), на голосовании 5 месяцев назад
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Gun : MonoBehaviour
{
public GameObject bullet;
public Transform bulletSpawnPoint;
public float shootingSpeed = 0.2f;
public float runningSpeed = 5f;

private bool isRunning = false;

void Update()
{
if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.D))
{
isRunning = true;
}
else
{
isRunning = false;
}

if (Input.GetKeyDown(KeyCode.Mouse0))
{
Shoot();
}
}

void Shoot()
{
GameObject newBullet = Instantiate(bullet, bulletSpawnPoint.position, Quaternion.identity);

if (isRunning)
{
newBullet.GetComponent<Rigidbody2D>().velocity = transform.right * runningSpeed;
}
else
{
if (transform.localScale.x > 0)
{
newBullet.GetComponent<Rigidbody2D>().velocity = transform.right * shootingSpeed;
}
else
{
newBullet.GetComponent<Rigidbody2D>().velocity = -transform.right * shootingSpeed;
}
}
}
}

пробовал разные скрипты, раньше они нормально работали, теперь персонаж стал стрелять только в правую сторону, как стоя на месте, так и во время движения, а мне нужно и влево и вправо, коды разные пробовал, но ничего не меняется
Голосование за лучший ответ
GGG Просветленный (35578) 6 месяцев назад
 using System.Collections; 
using System.Collections.Generic;
using UnityEngine;

public class Gun : MonoBehaviour
{
public GameObject bulletPrefab;
public Transform bulletSpawnPoint;
public float shootingSpeed = 10f;
public float runningSpeed = 5f;

private bool isRunning = false;
private bool facingRight = true;

void Update()
{
if (Input.GetKey(KeyCode.D))
{
if (!facingRight) Flip();
isRunning = true;
}
else if (Input.GetKey(KeyCode.A))
{
if (facingRight) Flip();
isRunning = true;
}
else
{
isRunning = false;
}
if (Input.GetKeyDown(KeyCode.Mouse0))
{
Shoot();
}
}
void Flip()
{
facingRight = !facingRight;
Vector3 localScale = transform.localScale;
localScale.x *= -1;
transform.localScale = localScale;
}
void Shoot()
{
GameObject newBullet = Instantiate(bulletPrefab, bulletSpawnPoint.position, Quaternion.identity);
Rigidbody2D bulletRb = newBullet.GetComponent();
float direction = facingRight ? 1 : -1;
float speed = isRunning ? runningSpeed : shootingSpeed;
bulletRb.velocity = new Vector2(direction * speed, 0);
newBullet.transform.localScale = new Vector3(Mathf.Abs(newBullet.transform.localScale.x) * direction, newBullet.transform.localScale.y, newBullet.transform.localScale.z);
}
}
Виталий ЛаскинУченик (105) 6 месяцев назад
ничего не поменялось, всё пуля летит только вправо
GGG Просветленный (35578) Виталий Ласкин, Изменил
Похожие вопросы