- Home /
Question by
Pibio · Sep 03, 2014 at 10:44 AM ·
androidmovementcontroller
Movement help 2D Android HELP ME
Hello, guys i'm just trying to make some buttons for my player to move. but already animated a player and script to control it.. here my scripts
Controller: using System.Collections;
public class PlayerController : MonoBehaviour { public GUITexture left; public GUITexture right; public GUITexture up; public GUITexture down; public Vector2 moving = new Vector2();
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
moving.x = moving.y = 0;
if(Input.touchCount > 0 && Input.GetTouch(0)){
if(right.HitTest(Input.touches[0].position)){
moving.x = 1;
}
if(left.HitTest(Input.touches[0].position)){
moving.x = -1;
}
if(up.HitTest(Input.touches[0].position)
moving.y = 1;
}
if(down.HitTest(Input.touches[0].position){
moving.y = -1;
}
}
}
I'm tired of trying to make it work guys please help me out
here the player script:
using UnityEngine; using System.Collections;
public class Player : MonoBehaviour {
public float speed = 10f;
public Vector2 maxVelocity = new Vector2(3, 5);
public bool standing;
public float jetSpeed = 15f;
public float airSpeedMultiplier = .3f;
public AudioClip leftFootSound;
public AudioClip rightFootSound;
public AudioClip thudSound;
public AudioClip rocketSound;
public Vector2 moving = new Vector2();
private Animator animator;
private Movimiento controller;
void Start(){
controller = GetComponent<Movimiento> ();
animator = GetComponent<Animator> ();
}
void PlayLeftFootSound(){
if (leftFootSound)
AudioSource.PlayClipAtPoint (leftFootSound, transform.position);
}
void PlayRightFootSound(){
if (rightFootSound)
AudioSource.PlayClipAtPoint (rightFootSound, transform.position);
}
void PlayRocketSound(){
if (!rocketSound || GameObject.Find ("RocketSound"))
return;
GameObject go = new GameObject ("RocketSound");
AudioSource aSrc = go.AddComponent<AudioSource> ();
aSrc.clip = rocketSound;
aSrc.volume = 0.7f;
aSrc.Play ();
Destroy (go, rocketSound.length);
}
void OnCollisionEnter2D(Collision2D target){
if (!standing) {
var absVelX = Mathf.Abs(rigidbody2D.velocity.x);
var absVelY = Mathf.Abs(rigidbody2D.velocity.y);
if(absVelX <= .1f || absVelY <= .1f){
if(thudSound)
AudioSource.PlayClipAtPoint(thudSound, transform.position);
}
}
}
// Update is called once per frame
void Update () {
var forceX = 0f;
var forceY = 0f;
var absVelX = Mathf.Abs (rigidbody2D.velocity.x);
var absVelY = Mathf.Abs (rigidbody2D.velocity.y);
if (absVelY < .2f) {
standing = true;
} else {
standing = false;
}
if (controller.moving.x != 0) {
if (absVelX < maxVelocity.x) {
forceX = standing ? speed * controller.moving.x : (speed * controller.moving.x * airSpeedMultiplier);
transform.localScale = new Vector3 (forceX > 0 ? 1 : -1, 1, 1);
}
animator.SetInteger ("AnimState", 1);
} else {
animator.SetInteger ("AnimState", 0);
}
if (controller.moving.y > 0) {
PlayRocketSound();
if (absVelY < maxVelocity.y)
forceY = jetSpeed * controller.moving.y;
animator.SetInteger ("AnimState", 2);
} else if (absVelY > 0) {
animator.SetInteger("AnimState", 3);
}
rigidbody2D.AddForce (new Vector2 (forceX, forceY));
}
}
WHAT CAN I DO?
Comment