C# Пули криво летят относительно мышки [closed]C#

Место общения программистов C#
Ответить
Anonymous
 C# Пули криво летят относительно мышки [closed]

Сообщение Anonymous »

Изначально планируется сделать персонажа, который будет вращаться лево/право и бегать, а также стрелять по направлению мышки. Но после того как перерыл с десяток видео проблема не решилась, а и важный момент стрельба происходит из определенной точки, которая не только визуально но и программно крутит перса (стреляет из посоха). Пули летят и вроде меняют вектор движения, и пытаются догнать мышку, но чтобы пуля летела куда я хочу нужно брать примерно на 45 - 60 градусов больше, что делать - я не знаю. Помогите пожалуйста. Переделывал код, но суть одна, идет отставание в градусах на 45-60.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Bullet : MonoBehaviour
{
public float timeDestroy = 3f;
public float speed = 3f;
public Rigidbody2D rb;

void Start()
{
rb = GetComponent();

Vector3 diference = Camera.main.ScreenToWorldPoint(Input.mousePosition) - transform.position;
float rotateZ = Mathf.Atan2(diference.y, diference.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.Euler(0f, 0f, rotateZ);

rb.velocity = transform.up * speed;
Invoke("DestroyBullet", timeDestroy);
}

void DestroyBullet()
{
Destroy(this.gameObject);
}
}

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Player : MonoBehaviour
{
[SerializeField] float speed;
[SerializeField] GameObject bullet;
[SerializeField] Transform shootPos;
Rigidbody2D rb;
Vector2 moveVelocity;
void Start()
{
rb = GetComponent();

}

// Update is called once per frame
void Update()
{
PlayerMirror();

if (Input.GetMouseButtonDown(0))
{
Shoot();
}
}
private void FixedUpdate()
{
Move();
}
#region Base Function (Rotate and Move)
void Move()
{
Vector2 moveInput = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));

moveVelocity = moveInput.normalized * speed;

rb.MovePosition(rb.position + moveVelocity * Time.fixedDeltaTime);
}
public bool FaceRight = true;
void PlayerMirror()
{
moveVelocity.x = Input.GetAxis("Horizontal");
rb.velocity = new Vector2(moveVelocity.x * speed, rb.velocity.y);

if (Input.GetAxis("Horizontal") > 0)
{
FaceRight = true;

Quaternion rot = transform.rotation;
rot.y = 0;
transform.rotation = rot;
}

if (Input.GetAxis("Horizontal") < 0)
{
FaceRight = false;

Quaternion rot = transform.rotation;
rot.y = 180;
transform.rotation = rot;

}
}
#endregion
void Shoot ()
{
Instantiate(bullet, shootPos.position, shootPos.rotation);
}
}


Подробнее здесь: https://stackoverflow.com/questions/786 ... 0%ba%d0%b8
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»