- Home /
Question by
EinsteinsBrother · Mar 07, 2017 at 04:24 PM ·
2d3dendless runnerstudent
Converting 3D Code into 2D Code (vertical endless runner)
Hi guys, I am trying to program a endless vertical runner for school. I got a code working in 3D, one Script attached to a limiter which is not in sight of the camera, and one attached to the player. As I need the game to be 2D I tried transferring it from 3D to 2D. I set everything up and as far as I concerned it should work as well, but somehow it doesn't. It would be great, if u can tell me what to change. It would be awesome, if you could help me. Thanks in advance.
Script attached to the "limiter":
using System.Collections;
using UnityEngine.UI;
using System.Collections.Generic;
using UnityEngine.SceneManagement;
using UnityEngine;
public class EndlessRun : MonoBehaviour {
public bool isGameOver;
public List<GameObject> bgList;
public List<Transform> currentManagedBGList;
public GameObject lastSpawnedBG;
public GameObject restartDialog;
public Vector3 pace;
public float timess;
public Vector3 a;
public float pacea;
public Text countText;
public int maxpoints;
public float time;
void Start () {
isGameOver = false;
restartDialog.SetActive (false);
}
void Update (){ a = Time.deltaTime * Time.timeSinceLevelLoad * Vector3.down * pacea;
pace = Vector3.down * timess + a;
if (!isGameOver){
SetCountText ();
foreach (Transform t in currentManagedBGList) {
t.transform.Translate (pace);
}
}
else {
restartDialog.SetActive (true);
}
;
}
public void RestartGame()
{
Application.LoadLevel (Application.loadedLevelName);
}
private void OnTriggerExit(Collider other)
{
if(other.tag.Equals("BG"))
{
currentManagedBGList.Remove(other.transform);
Destroy(other.gameObject);
Vector3 spawnPos = lastSpawnedBG.transform.position;
spawnPos.y += lastSpawnedBG.GetComponent<Collider>().bounds.size.y/2;
lastSpawnedBG = (GameObject) Instantiate(bgList[Random.Range(0, bgList.Count)], spawnPos,Quaternion.identity);
spawnPos.y += lastSpawnedBG.GetComponent<Collider>().bounds.size.y / 2;
lastSpawnedBG.transform.position = spawnPos;
currentManagedBGList.Add(lastSpawnedBG.transform);
}
}
void SetCountText()
{
time = (int) (Time.timeSinceLevelLoad * 10);
countText.text = time.ToString();
}
}
Script attached to the Player
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ERPlayer : MonoBehaviour {
public EndlessRun er;
public float minSwipeDistY;
public float minSwipeDistX;
private Vector2 startPos;
void Start () {
Screen.orientation = ScreenOrientation.Portrait;
}
void Update () {
if (Input.touchCount > 0)
{
Touch touch = Input.touches[0];
switch (touch.phase)
{
case TouchPhase.Began:
startPos = touch.position;
break;
case TouchPhase.Ended:
float swipeDistVertical = (new Vector3(0, touch.position.y, 0) - new Vector3(0, startPos.y, 0)).magnitude;
if (swipeDistVertical > minSwipeDistY)
{
float swipeValue = Mathf.Sign(touch.position.y - startPos.y);
if (swipeValue > 0)
{ }
else if (swipeValue < 0)
{ }
}
float swipeDistHorizontal = (new Vector3(touch.position.x, 0, 0) - new Vector3(startPos.x, 0, 0)).magnitude;
if (swipeDistHorizontal > minSwipeDistX)
{
float swipeValue = Mathf.Sign(touch.position.x - startPos.x);
if (swipeValue > 0)//right swipe
//if (transform.position.x != 2)
transform.Translate(2, 0, 0);
else if (swipeValue < 0)//left swipe
//if (transform.position.x != -2)
transform.Translate(-2, 0, 0);
}
break;
}
}
}
private void OnTriggerEnter(Collider other)
{
if (other.tag.Equals("Obstacles"))
er.isGameOver = true;
er.maxpoints += (int) er.time;
}
}
Comment
Your answer

Follow this Question
Related Questions
UDP app signature? 1 Answer
2D and 3D lights in a scene. URP,2D and 3D lights in scene URP 1 Answer
2D Battle System In a 3D Game 3 Answers
Unity to make a Toolset? 3 Answers