Question by
Forbidden_Duck · Feb 03, 2017 at 01:47 PM ·
c#androidtouchtouch controlspong
Android Controls
Hi,
I am making a remake of the game Pong Click Here
This is the Ball Script
using System;
using System.IO;
using UnityEngine;
using UnityEngine.SceneManagement;
public class Ball : MonoBehaviour
{
public float speed = 12;
void Start()
{
// Initial Velocity
GetComponent<Rigidbody2D>().velocity = Vector2.right * speed;
}
float hitFactor(Vector2 ballPos, Vector2 racketPos,
float racketHeight)
{
// ascii art:
// || 1 <- at the top of the racket
// ||
// || 0 <- at the middle of the racket
// ||
// || -1 <- at the bottom of the racket
return (ballPos.y - racketPos.y) / racketHeight;
}
void OnCollisionEnter2D(Collision2D col)
{
// Note: 'col' holds the collision information. If the
// Ball collided with a racket, then:
// col.gameObject is the racket
// col.transform.position is the racket's position
// col.collider is the racket's collider
// Hit the left Racket?
if (col.gameObject.name == "RacketLeft")
{
// Calculate hit Factor
float y = hitFactor(transform.position,
col.transform.position,
col.collider.bounds.size.y);
// Calculate direction, make length=1 via .normalized
Vector2 dir = new Vector2(1, y).normalized;
// Set Velocity with dir * speed
GetComponent<Rigidbody2D>().velocity = dir * speed;
}
// Hit the right Racket?
if (col.gameObject.name == "RacketRight")
{
// Calculate hit Factor
float y = hitFactor(transform.position,
col.transform.position,
col.collider.bounds.size.y);
// Calculate direction, make length=1 via .normalized
Vector2 dir = new Vector2(-1, y).normalized;
// Set Velocity with dir * speed
GetComponent<Rigidbody2D>().velocity = dir * speed;
}
if (col.gameObject.name == "WallLeft")
{
SceneManager.LoadScene("RightSide Scene");
}
if (col.gameObject.name == "WallRight")
{
SceneManager.LoadScene("LeftSide Scene");
}
}
}
This is the Rackets Script
using UnityEngine;
public class MoveRacket : MonoBehaviour
{
public float speed = 30;
public string axis = "Vertical";
void FixedUpdate()
{
float v = Input.GetAxisRaw(axis);
GetComponent<Rigidbody2D>().velocity = new Vector2(0, v) * speed;
}
}
Let me know if you need anything else! I just need to know how to add Touch Controls for Android
Comment
Answer by ElsewhereStudios · Feb 03, 2017 at 01:50 PM
Interesting! I might look later, if I remember
Your answer
Follow this Question
Related Questions
Why is my multi touch not working? 1 Answer
How can i move just one object ? 0 Answers
Hold touch button Unity Javascript 1 Answer
How to separate a Tap from a Swipe? 0 Answers