- Home /
[Beginner] [C#] Modified Character Motor Script gives strange Parsing Error
I found some code to use instead of the CharacterMotor script, which was modified to rotate left and right instead of turning left and right. It doesn't work though, and only gives me a 'Parsing Error' (not specific to any line). I can't find any bugs though? what's wrong?
I tried a few ways to get my FPS controller to rotate instead of move its position left or right but nothing worked. Maybe you have some tips to do this otherwise? It should be very simple.
/// This script moves the character controller forward /// and sideways based on the arrow keys. /// It also jumps when pressing space. /// Make sure to attach a character controller to the same game object. /// It is recommended that you make only one call to Move or SimpleMove per frame. using UnityEngine; using System.Collections;
var speed : float = 8.0;
var jumpSpeed : float = 8.0;
var gravity : float = 20.0;
private var moveDirection : Vector3 = Vector3.zero;
function Update() {
//var controller : CharacterController = GetComponent(CharacterController);
if (controller.isGrounded) {
// We are grounded, so recalculate
// move direction directly from axes
moveDirection = Vector3(Input.GetAxis("Horizontal"), 0,
Input.GetAxis("Vertical"));
moveDirection = transform.TransformDirection(moveDirection);
moveDirection *= speed;
if (Input.GetButton ("Jump")) {
moveDirection.y = jumpSpeed;
}
}
// Apply gravity
moveDirection.y -= (gravity * Time.deltaTime);
// Move the controller
controller.Move(moveDirection * Time.deltaTime);
}
Answer by trs9556 · May 27, 2013 at 12:34 AM
EDIT:
I removed my example because aldonaletto converted it nicely. Use his example.
Answer by aldonaletto · May 27, 2013 at 01:02 AM
This is the Move example script in JS version and with the C# using directives at the beginning - I suppose that this would never work, and this code doesn't turn left/right anyway. The correct C# script with some changes to make it turn left/right with the arrow keys is:
using UnityEngine;
using System.Collections;
public class example : MonoBehaviour {
public float speed = 6.0F;
public float jumpSpeed = 8.0F;
public float rotSpeed = 90.0f; // turn at 90 degrees/second
public float gravity = 20.0F;
private Vector3 moveDirection = Vector3.zero;
void Update() {
// rotate character with Horizontal keys:
transform.Rotate(0, Input.GetAxis("Horizontal") * rotSpeed * Time.deltaTime, 0);
CharacterController controller = GetComponent<CharacterController>();
if (controller.isGrounded) {
moveDirection = new Vector3(0, 0, Input.GetAxis("Vertical"));
moveDirection = transform.TransformDirection(moveDirection);
moveDirection *= speed;
if (Input.GetButton("Jump")){
moveDirection.y = jumpSpeed;
}
}
moveDirection.y -= gravity * Time.deltaTime;
controller.Move(moveDirection * Time.deltaTime);
}
}
Your answer
Follow this Question
Related Questions
Enemy not moving towards Player 0 Answers
only one command is executed after "if" statement, rest are ignored? help! 1 Answer
Where i can find detailed description of Unity C# function? 2 Answers
Where can I find tutorials for scripting in c#?? 1 Answer
The name 'Joystick' does not denote a valid type ('not found') 2 Answers