Problem med kod för unity, försöker skapa en slinga C#
Hej jag försöker att begränsa hur långt bak slingan kan sträckas, koden är från en tutorial men en exakt kopia verkar inte fungera. Om jag i unity startar spelet så fungerar allt toppen med så fort jag trycker på bollen som ska skujtas iväg får jag upp detta error:
NullReferenceException: Object reference not set to an instance of an object
BallScript.DragBall () (at Assets/BallScript.cs:37)
Vad jag vill är att kunna begränsa hur långt bak jag kan dra bollen innan den stoppas så att man inte kan skjuta den hur långt so helst. Om ni har andra övriga tips så skulle dom uppskattas. PS: Jag skickar med en bild från unity.
tackar i förväg.
här är hela koden:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BallScript : MonoBehaviour
{
private bool isPressed;
private float releaseDelay;
private float maxDragDistance = 2f;
private float distance;
private Rigidbody2D rb;
private SpringJoint2D sj;
private Rigidbody2D slingRb;
private void Awake(){
rb = GetComponent<Rigidbody2D>();
sj = GetComponent<SpringJoint2D>();
slingRb = sj.connectedBody;
releaseDelay = 1/ (sj.frequency*4);
}
void Update()
{
if(isPressed){
DragBall();
}
}
void DragBall()
{
Vector2 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
distance = Vector2.Distance(mousePosition, slingRb.position);
if(distance > maxDragDistance){
Vector2 direction = (mousePosition - slingRb.position).normalized;
rb.position = slingRb.position + direction * maxDragDistance;
}else {
rb.position = mousePosition;
}
}
void OnMouseDown()
{
isPressed = true;
rb.isKinematic = true;
}
void OnMouseUp()
{
isPressed = false;
rb.isKinematic = false;
StartCoroutine(Release());
}
private IEnumerator Release(){
yield return new WaitForSeconds(releaseDelay);
sj.enabled = false;
}
}
bild:
Trasig länk till lokal fil raderad. // Mod