What is the problem with the forward motion in this script?
I have created a code that uses Leap Motion to walk forward and backward using swipe hand gestures. Now the backward motion works fine, but the forward motion does not. I thought the problem was with the Leap Motion Controller itself and I have tried to replace them with each other and even tried the other hand. The problem is with the script I wrote.
using UnityEngine; using System.Collections; using Leap;
public class Newsedf : MonoBehaviour { Controller controller; public bool moveBack; public bool moveFront; public float movementSpeed= 20.0f; float verticalVelocity= 0; public float forwardSpeed=10; float sideSpeed=0;
void Start () {
controller = new Controller ();
controller.EnableGesture (Gesture.GestureType.TYPESWIPE);
controller.Config.SetFloat ("Gesture.Swipe.MiniLength", 200.0f);
controller.Config.SetFloat ("Gesture.Swipe.MiniVelocity", 750f);
controller.Config.Save ();
}
void Update () {
CharacterController cc = GetComponent<CharacterController> ();
Frame frame = controller.Frame ();
GestureList gestures = frame.Gestures ();
Hand hand = frame.Hands.Frontmost;
if (hand.IsLeft) {
for (int i=0; i<gestures.Count; i++) {
Gesture gesture = gestures [i];
if (gesture.Type == Gesture.GestureType.TYPESWIPE) {
SwipeGesture Swipe = new SwipeGesture (gesture);
Vector swipeDirection = Swipe.Direction;
if (swipeDirection.x < 0) {
Debug.Log ("Left Left");
moveFront = true;
moveBack = false;
} else if (swipeDirection.x > 0) {
Debug.Log ("Left Right");
moveBack = true;
moveFront = false;
}
}
}
if(moveFront == true) {
//moveBack= false;
float forwardSpeed= 5;
Vector3 speed= new Vector3( sideSpeed, verticalVelocity, forwardSpeed);
speed = transform.rotation * speed;
cc.Move (speed* Time.deltaTime);
}else if(moveBack == true) {
//moveFront= false;
float forwardSpeed= 5;
Vector3 speed= new Vector3( sideSpeed, verticalVelocity, forwardSpeed);
speed = transform.rotation * speed*-1;
//speed= transform.forward;
//speed= speed* forwardSpeed;
cc.Move (speed* Time.deltaTime);
}else{
moveFront= false;
moveBack= false;
float forwardSpeed=0;
Vector3 speed= new Vector3( sideSpeed, verticalVelocity, forwardSpeed);
speed = transform.rotation * speed;
cc.Move (speed* Time.deltaTime);
}
}
} }
Your answer
Follow this Question
Related Questions
fps script not working 1 Answer
BoatRiderController? 1 Answer
Allowing player to glide/fall slowly 2 Answers
invisa Walls 1 Answer
The code does not work in unity 0 Answers