(извините, если форматирование или что-то еще некорректно, я уже давно использую stackoverflow, никогда раньше не задавал вопросов. Плюс, я новичок в unity и c #)
Не могу опубликоватьизображения, но вот ссылка на imgur
https://imgur.com/a/jcki1qd
(извините, у меня много проблем с описанием вещей, и я думаю, что изображение поможет)
Iу меня есть простой код для кругового спрайта с круговой картой спрайтов, которая прикреплена к пружине, и когда я удерживаю спрайт, перетаскиваю его назад и отпускаю мышь, объект летит в направлении, противоположном тому, куда я перетащил его обратно (почти злые птицы любят запускать).Но когда я держу спрайт, я могу обрезать его через другие спрайты на моем уровне, и даже за его пределами.Мяч плывет, и игра должна быть в состоянии перетащить и запустить его в любом направлении.
Я пытался установить силу разрыва пружины на довольно низкий уровень, поэтому мяч не запускается, еслиЯ вытягиваю его слишком далеко, но мяч все еще следует за моей мышью, когда я тащу его, и когда я отпускаю его после весенних каникул, шар просто падает вниз.
Кроме того, я попытался ограничить радиуспружина, ограничивая ее длину.Но это не сработало.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LaunchScript : MonoBehaviour
{
public Rigidbody2D rb;
private bool isPressed = false;
public float releaseTime = 0.15f;
private void Update()
{
if (isPressed)
{
rb.position = Camera.main.ScreenToWorldPoint(Input.mousePosition);
}
}
// Start is called before the first frame update
void OnMouseDown()
{
isPressed = true;
rb.isKinematic = true;
}
// Update is called once per frame
private void OnMouseUp()
{
isPressed = false;
rb.isKinematic = false;
StartCoroutine(Release());
}
IEnumerator Release()
{
yield return new WaitForSeconds(releaseTime);
GetComponent<SpringJoint2D>().enabled = false;
this.enabled = false;
}
}
Мои ожидаемые результаты были такими: мяч следовал за мышью и мог тянуться назад, но не проходил через зеленые наземные блоки, корзину,или граничные блоки (блоки, используемые для предотвращения вылетания мяча за пределы поля).Мои реальные результаты были такими: я мог перетащить мяч в любую точку экрана, в том числе прямо в зеленую землю и за ее пределы.