"Pushing" 2D Objects without applying a force?
Beginner here. Stumped on a design challenge. Trying to reverse engineer this simple puzzle game: http://gameaboutsquares.com/
The challenge is to implement it without applying forces. I'm currently just moving squares simply by transform.Translate which works well enough. I've been trying to use OnTriggerEnter2D and sendMessage to have the squares tell each other which direction to move but a bit braindead, so I thought I'd see if there's anyone out there who'd like to add some insight. where i'm at so far:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Movement : MonoBehaviour
{
public float speed;
Vector3 direction;
// Start is called before the first frame update
void Start()
{
//sets default direction to right
direction = Vector3.right;
}
void OnTriggerEnter2D(Collider2D other)
{
if (other.tag == "up")
{
//checks for Up arrows and changes the direction if they collide
print("trigger working");
ChangeDirectionUp();
}
//checks if squares are touching..i think this is wrong.
if (other.tag == "square") {
print("ew squares are touching");
}
}
void PushRight() {
transform.Translate(Vector3.right * speed);
}
void ChangeDirectionUp() {
print("change to up!");
direction = Vector3.up;
}
private void OnMouseDown()
{
//very simply, translate the square in direction set by the direction and speed variables
//direction for this square is default to right but can be changed. a speed of 1 is a single space
//on the scene grid.
transform.Translate(direction * speed);
}
}
thanks for any advice! xo
Your answer
Follow this Question
Related Questions
NPC AI - Collision Detection & Resuming Behavior 0 Answers
2D Platformer: Failure to jump through platform 0 Answers
How to use a function from another script 1 Answer
AudioSource.play() not playing 0 Answers
Unity 2d Collision Glitch Help 0 Answers