Нужна помощь с рикошетом в игре unity2d

Программирование на Юнити.

Нужна помощь с рикошетом в игре unity2d

Сообщение botaforq 23 мар 2021, 11:54

Проблема такая при попадания в угл коробки при средней скорости пули она просто пролетает прямо как будто там нету бокса , при маленькой скорости все нормально.
пытался использовать bounce но все также, также пытался задавать полет пули разными способами тоже не помогло.
Скрипт пули и выстрела прикрепил ниже. Кто знает помогите пожалуйста

Код пули:
private Rigidbody2D rb;
Vector3 lastVelocity;
public float speed = 0f;
// Start is called before the first frame update
void Start()
{
rb = GetComponent<Rigidbody2D>();
rb.velocity = transform.right * speed;

}
private void Update()
{
lastVelocity = rb.velocity;
}

private void OnCollisionEnter2D(Collision2D collision)
{
Debug.Log("collision");
var speed = lastVelocity.magnitude;
var direction = Vector3.Reflect(lastVelocity.normalized, collision.contacts[0].normal);
rb.velocity = direction * Mathf.Max(speed, 0f);
}



код выстрела:
[list=]
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class weapon : MonoBehaviour
{
public Transform shotposs;
public GameObject bullet;
public float bulletspeed = 0f;
// Start is called before the first frame update
void Start()
{

}

// Update is called once per frame
void Update()
{
if (Input.GetMouseButtonDown(0))
{
shoot();
}
}

void shoot()
{
Instantiate(bullet, shotposs.transform.position, shotposs.transform.rotation);
/*GameObject bulletIns = Instantiate(bullet, shotposs.position, shotposs.rotation); // Раньше данным способом задавал полет пули
bulletIns.GetComponent<Rigidbody2D>().AddForce(bulletIns.transform.right * bulletspeed);*/
}
}
Последний раз редактировалось botaforq 23 мар 2021, 16:54, всего редактировалось 1 раз.
botaforq
UNIт
 
Сообщения: 51
Зарегистрирован: 23 мар 2021, 11:43

Re: Нужна помощь с рикошетом в игре unity2d

Сообщение Alkos26Rus 23 мар 2021, 12:53

В момент попадания в угол поставь на паузу и посмотри покадрово что происходит, сколько столкновений отслеживается, сколько раз сменяется направление и тд. Может контактов при столкновении не один а не сколько, это как раз для угла свойственно, может нужно вобще триггер использовать, ну просто если это 2д мячик который отскакивает от стенок то жесткая физика может и не нужна.
Аватара пользователя
Alkos26Rus
Адепт
 
Сообщения: 1640
Зарегистрирован: 26 ноя 2020, 17:52
Откуда: Москва

Re: Нужна помощь с рикошетом в игре unity2d

Сообщение TeslaGan 23 мар 2021, 13:17

Попробуйте в настройках Rigidbody 2d выставить Collision Detection на Continuous
TeslaGan
UNITрон
 
Сообщения: 315
Зарегистрирован: 01 авг 2015, 18:00

Re: Нужна помощь с рикошетом в игре unity2d

Сообщение botaforq 23 мар 2021, 16:37

Alkos26Rus писал(а):В момент попадания в угол поставь на паузу и посмотри покадрово что происходит, сколько столкновений отслеживается, сколько раз сменяется направление и тд. Может контактов при столкновении не один а не сколько, это как раз для угла свойственно, может нужно вобще триггер использовать, ну просто если это 2д мячик который отскакивает от стенок то жесткая физика может и не нужна.


Пуля попадет в угл куба поднимается верх и не меняя направления летит, исправилось при помощи
TeslaGan писал(а): Rigidbody 2d выставить Collision Detection на Continuous
Последний раз редактировалось botaforq 23 мар 2021, 16:51, всего редактировалось 3 раз(а).
botaforq
UNIт
 
Сообщения: 51
Зарегистрирован: 23 мар 2021, 11:43

Re: Нужна помощь с рикошетом в игре unity2d

Сообщение botaforq 23 мар 2021, 16:40

TeslaGan писал(а):Попробуйте в настройках Rigidbody 2d выставить Collision Detection на Continuous


Спасибо помогло [unity 3D]
botaforq
UNIт
 
Сообщения: 51
Зарегистрирован: 23 мар 2021, 11:43


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3