Изначально планируется сделать персонажа, который будет вращаться лево/право и бегать, а также стрелять по направлению мышки. Но после того как перерыл с десяток видео проблема не решилась, а и важный момент стрельба происходит из определенной точки, которая не только визуально но и программно крутит перса (стреляет из посоха). Пули летят и вроде меняют вектор движения, и пытаются догнать мышку, но чтобы пуля летела куда я хочу нужно брать примерно на 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
C# Пули криво летят относительно мышки [closed] ⇐ C#
Место общения программистов C#
-
Anonymous
1719873417
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);
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78694440/c-sharp-%d0%9f%d1%83%d0%bb%d0%b8-%d0%ba%d1%80%d0%b8%d0%b2%d0%be-%d0%bb%d0%b5%d1%82%d1%8f%d1%82-%d0%be%d1%82%d0%bd%d0%be%d1%81%d0%b8%d1%82%d0%b5%d0%bb%d1%8c%d0%bd%d0%be-%d0%bc%d1%8b%d1%88%d0%ba%d0%b8[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия