This is a one script proof of concept where you can manipulate a character by dragging it across the screen and avoid the obstacles that are coming towards you.
I got the three sprites from the pixabay:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FingerScript : MonoBehaviour
{
// Set up a basic scene - just a camera with an orthographic view and a z distance of -10. Drag a background on to the scene if you like. Add 2 GameObjects with sprites to the scene. I have a bubble and a puffer fish so I named them "bubble" and "puffer". Add a RigidBody2D to both and set them to Kinematic. Add a 2D collider to both (I went with a circle colider) and make sure at least one of them has the trigger box checked.
public Camera myCam;
public GameObject puffer;
public GameObject bubble;
// Attach this script to the bubble and drag the above components over to their respective script slots in the inspector. Using a true/false here means that your mouse won't drop the bubble if it is moving too fast...
public bool dragging = false;
private float distanceFromCamera = 10f;
private Vector3 mousePosition;
void Start ()
{
//This grabs the Pufferfish and makes it move downwards with a fixed velocity of -5;
puffer.GetComponent<Rigidbody2D> ().velocity = new Vector2 (0, -5f);
}
void Update ()
{
// You need to update the mouse position constantly and get its co-ordinates in world space instead of janky mouse space.
mousePosition = myCam.ScreenToWorldPoint (new Vector3 (Input.mousePosition.x, Input.mousePosition.y, distanceFromCamera));
// You can Raycast to see if you are clicking on the bubble. The Input.GetMouseButtonDown (0) is checking if the left mouse button has been clicked.
if (Input.GetMouseButtonDown (0)) {
RaycastHit2D hit = Physics2D.Raycast (myCam.ScreenToWorldPoint (Input.mousePosition), Vector2.zero);
if (hit && hit.collider.name == "bubble") {
dragging = true;
}
}
// This makes the bubble follow the mouse.
if (dragging) {
transform.position = new Vector3 (mousePosition.x, mousePosition.y, transform.position.z);
}
// This stops the bubble from following the mouse if the button is released.
if (Input.GetMouseButtonUp (0)) {
dragging = false;
}
// If the pufferfish goes off the bottom of the screen we just move it back to the top for now. We can pretend like it is a new fish...
if (puffer.transform.position.y <= -8) {
MovePufferFishToTop ();
}
}
// If you collide with the fish it also just makes a new one. Here is where you would loose if you were trying to avoid the fish..
void OnTriggerEnter2D (Collider2D col)
{
if (col.gameObject == puffer) {
MovePufferFishToTop ();
}
}
// this quick code moves the pufferfish back to the top and randomises the x position so it appears in different places.
void MovePufferFishToTop ()
{
float randomx = Random.Range (-6, 6);
puffer.transform.position = new Vector3 (randomx, 8, puffer.transform.position.z);
}
}
Facebook Comments