This segment is for simple movement for a player in an Air Hockey Game on a 3D plane. You move mouse x and y and the y corresponds on the z plane. This is from my Air Hockey 3D game available currently in the Android, iOS and Mac App Stores.
var other : GameObject ;
var dist : float;
var hitSound : AudioClip;
var spark : Transform;
var offset : Vector2 = Vector2.zero;
function spark1()
{
Instantiate (spark, transform.position, transform.rotation);
yield WaitForSeconds(0.5);
Destroy(GameObject.Find("Sparks(clone)"));
}
function Update () {
if (Time.timeScale != 0) {
other = GameObject.Find ("Sphere");
var Menu = GameObject.Find("Menu");
var script : menu = Menu.GetComponent(menu);
var hit : RaycastHit;
var up = Vector3 ((transform.position.x - other.transform.position.x) * -1 , 0,
(transform.position.z - other.transform.position.z) * -1 );
if (Input.GetAxis("Mouse Y") > 0) dist = 0.3 + (Input.GetAxis("Mouse Y") / 8 ) + other.rigidbody.velocity.magnitude / 80; else
dist = 0.15 + other.rigidbody.velocity.magnitude / 80;
Debug.DrawRay(transform.position, up , Color.green);
if(Physics.Raycast(transform.position, up , hit, dist)){
if(hit.collider.gameObject.name == "Sphere"){
spark1();
AudioSource.PlayClipAtPoint(hitSound, transform.position);
other.rigidbody.AddForce( up * (other.rigidbody.velocity.magnitude + 20 ), ForceMode.Impulse);
}
}
if (script.singlePlayer) {
Screen.showCursor = false; #if UNITY_EDITOR
if (Input.mousePosition.x > 0 && Input.mousePosition.x < Screen.width)
transform.position.x = Input.mousePosition.x / (Screen.width / 2.4);
if (Input.mousePosition.y > 0 && Input.mousePosition.y < (Screen.height * 0.7)) {
if (transform.position.z < 2.194 && transform.position.z > 0) {
transform.position.z = (Input.mousePosition.y * 0.7) / ((Screen.height * 0.7) / (3.18));
}
else if (transform.position.z >= 2.194) transform.position.z = 2.193;
else if (transform.position.z <= 0) transform.position.z = 0.0001;
}
//Debug.Log(transform.position.z);
#elif UNITY_IPHONE || UNITY_ANDROID
if(Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved) {
if (Input.mousePosition.x > 0 && Input.mousePosition.x < Screen.width)
transform.position.x = Input.mousePosition.x / (Screen.width / 2.4);
if (Input.mousePosition.y > 0 && Input.mousePosition.y < (Screen.height * 0.7)) {
if (transform.position.z < 2.194 && transform.position.z > 0) {
transform.position.z = (Input.mousePosition.y * 0.7) / ((Screen.height * 0.7) / (3.18));
}
else if (transform.position.z >= 2.194) transform.position.z = 2.193;
else if (transform.position.z <= 0) transform.position.z = 0.0001;
}
}
#endif
}
}
}
var dist : float;
var hitSound : AudioClip;
var spark : Transform;
var offset : Vector2 = Vector2.zero;
function spark1()
{
Instantiate (spark, transform.position, transform.rotation);
yield WaitForSeconds(0.5);
Destroy(GameObject.Find("Sparks(clone)"));
}
function Update () {
if (Time.timeScale != 0) {
other = GameObject.Find ("Sphere");
var Menu = GameObject.Find("Menu");
var script : menu = Menu.GetComponent(menu);
var hit : RaycastHit;
var up = Vector3 ((transform.position.x - other.transform.position.x) * -1 , 0,
(transform.position.z - other.transform.position.z) * -1 );
if (Input.GetAxis("Mouse Y") > 0) dist = 0.3 + (Input.GetAxis("Mouse Y") / 8 ) + other.rigidbody.velocity.magnitude / 80; else
dist = 0.15 + other.rigidbody.velocity.magnitude / 80;
Debug.DrawRay(transform.position, up , Color.green);
if(Physics.Raycast(transform.position, up , hit, dist)){
if(hit.collider.gameObject.name == "Sphere"){
spark1();
AudioSource.PlayClipAtPoint(hitSound, transform.position);
other.rigidbody.AddForce( up * (other.rigidbody.velocity.magnitude + 20 ), ForceMode.Impulse);
}
}
if (script.singlePlayer) {
Screen.showCursor = false; #if UNITY_EDITOR
if (Input.mousePosition.x > 0 && Input.mousePosition.x < Screen.width)
transform.position.x = Input.mousePosition.x / (Screen.width / 2.4);
if (Input.mousePosition.y > 0 && Input.mousePosition.y < (Screen.height * 0.7)) {
if (transform.position.z < 2.194 && transform.position.z > 0) {
transform.position.z = (Input.mousePosition.y * 0.7) / ((Screen.height * 0.7) / (3.18));
}
else if (transform.position.z >= 2.194) transform.position.z = 2.193;
else if (transform.position.z <= 0) transform.position.z = 0.0001;
}
//Debug.Log(transform.position.z);
#elif UNITY_IPHONE || UNITY_ANDROID
if(Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved) {
if (Input.mousePosition.x > 0 && Input.mousePosition.x < Screen.width)
transform.position.x = Input.mousePosition.x / (Screen.width / 2.4);
if (Input.mousePosition.y > 0 && Input.mousePosition.y < (Screen.height * 0.7)) {
if (transform.position.z < 2.194 && transform.position.z > 0) {
transform.position.z = (Input.mousePosition.y * 0.7) / ((Screen.height * 0.7) / (3.18));
}
else if (transform.position.z >= 2.194) transform.position.z = 2.193;
else if (transform.position.z <= 0) transform.position.z = 0.0001;
}
}
#endif
}
}
}
No comments:
Post a Comment