- Home /
Question by
Ilez12 · Mar 05, 2020 at 07:34 AM ·
2dscripting problem3d
2D blade to 3D
Hi! I have this script, which is a blade that cuts fruits. It works in 2D (when the main camera is set to orthographic) but not in 3D. Is there an easy way to fix/change this? I started by changing all the components from 2D to regular 3D but no luck so far - the blade is still not moving in 3D BUT it's cutting. This is the script:
{
public bool isCutting = false;
public GameObject combo2x;
Vector2 previousPosition;
CircleCollider2D circleCollider;
GameObject currentBladeTrail;
public float MinCutVelocity = 0.001f;
public GameObject bladeTrailPrefab;
Camera cam;
Rigidbody2D rb;
void Start()
{
rb = GetComponent<Rigidbody2D>();
cam = Camera.main;
circleCollider = GetComponent<CircleCollider2D>();
}
void Update()
{
if (Input.GetMouseButtonDown(0))
{
StartCutting();
}else if (Input.GetMouseButtonUp(0))
{
StopCutting();
}
if(isCutting)
{
UpdateCutting();
}
}
void UpdateCutting()
{
Vector2 newPosition = cam.ScreenToWorldPoint(Input.mousePosition);
rb.position = newPosition;
float velocity = (newPosition - previousPosition).magnitude * Time.deltaTime;
if (velocity > MinCutVelocity)
{
circleCollider.enabled = true;
}else
{
circleCollider.enabled = false;
}
previousPosition = newPosition;
}
void StartCutting()
{
isCutting = true;
currentBladeTrail = Instantiate(bladeTrailPrefab, transform);
previousPosition = cam.ScreenToWorldPoint(Input.mousePosition);
circleCollider.enabled = false;
rb.position = cam.ScreenToWorldPoint(Input.mousePosition);
transform.position = rb.position;
}
void StopCutting()
{
isCutting = false;
currentBladeTrail.transform.SetParent(null);
Destroy(currentBladeTrail, 2f);
circleCollider.enabled = false;
}
}
Comment
Your answer
Follow this Question
Related Questions
UDP app signature? 1 Answer
Normals incorrect in view 0 Answers
2D character movement is jittery (top-down) 1 Answer
How do I flip the character when an object is infront/behind it? 1 Answer