- Home /
Question by
sandeeprahul156 · Aug 11, 2017 at 12:06 PM ·
rotationrotatecharacter controllerswipe
palyer forward , side ways in running game
im developing running game so that it never stops until it get hit.i use player.forward so here is my problem when i want to change direction of player to 90(left) and -90(right) degree , player turns 90 degrees but also goes forward . can anyone seperate the forward and turning situation. And this is my code using UnityEngine; using System.Collections; using UnityEngine.EventSystems;
public class touchplayer : MonoBehaviour {
private float fingerStartTime = 0.0f;
private Vector2 fingerStartPos = Vector2.zero;
private bool isSwipe = false;
private float minSwipeDist = 50.0f;
private float maxSwipeTime = 0.5f;
private Vector2 startPos;
private Animator animator;
int TapCount;
public float MaxDubbleTapTime;
float NewTime;
public CharacterController controller;
void Start(){
controller = GetComponent<CharacterController> ();
animator = GetComponent<Animator> ();
}
void Update()
{
if (Input.touchCount > 0){
foreach (Touch touch in Input.touches)
{
switch (touch.phase)
{
case TouchPhase.Began :
/* this is a new touch */
isSwipe = true;
fingerStartTime = Time.time;
fingerStartPos = touch.position;
break;
case TouchPhase.Canceled :
/* The touch is being canceled */
isSwipe = false;
break;
case TouchPhase.Ended :
float gestureTime = Time.time - fingerStartTime;
float gestureDist = (touch.position - fingerStartPos).magnitude;
if (isSwipe && gestureTime < maxSwipeTime && gestureDist > minSwipeDist){
Vector2 direction = touch.position - fingerStartPos;
Vector2 swipeType = Vector2.zero;
if (Mathf.Abs(direction.x) > Mathf.Abs(direction.y)){
// the swipe is horizontal:
swipeType = Vector2.right * Mathf.Sign(direction.x);
}else{
// the swipe is vertical:
swipeType = Vector2.up * Mathf.Sign(direction.y);
}
if(swipeType.x != 0.0f){
if (swipeType.x > 0.0f) {
// MOVE RIGHT
controller.transform.Rotate (0, 90, 0);
} else {
// MOVE LEFT
controller.transform.Rotate (0, -90, 0);
}
}
if(swipeType.y != 0.0f ){
if(swipeType.y > 0.0f){
// MOVE UP
animator.SetBool ("jumping", true);
Invoke ("stopJumping", 0.1f);
}else{
// MOVE DOWN
controller.height = 0.0f;
animator.SetBool ("sliding", true);
Invoke ("stopSliding", 0.1f);
}
}
}
break;
}
}
}
/*animator.SetBool ("flying", true);
Invoke ("stopFlying", 8.0f);
print ("Dubble tap");*/
}
void stopJumping(){
animator.SetBool ("jumping", false);
}
void stopSliding(){
animator.SetBool ("sliding", false);
}
void stopFlying(){
animator.SetBool ("flying", false);
}
}
Comment
Your answer