Hello community!
I've been working on a script recently, and it's not working for me, i want to be able to make the character continually go in a forward direction when they press the keys "ctrl" and "f" and disable when they press another combination.
i'm not too worried about turning the auto-move off right now since.... it doesn't turn on.
(my new script is below)
also, that isn’t my full MoveAround script… but that’s all the parts of my script that control auto-movement.
yes, i am using the Tornado Twins moving script, but i've modified it so much....that the full script is hardly recognizable as their tutorial's MoveAround script. but, you know, it still is their script in a way. and they helped me ALOT.
thanks for any help!!!
//shooting
static var UseBetterBullet = false;
//dying
static var dead = false;//1st time dying
static var Dead = false;//2nd time dying
private var Respawn = true;//first respawn
static var money = 0;
static var SCORE = 0;
var constant = false;
var cont = false;
private var auto = false;
private var movement : Vector3 = Vector3.zero;
static var Player1 = true;
var bullitPrefab : Transform;
var respawn1 : Vector3;
var respawn2 : Vector3;
var RespawnToHere : Vector3;
static var DSN = false;
//geting hit
static var gotHit = false;
static var IsPlayer = true;
//respawn
function LateUpdate()
{
if(PlayerHeliPlayer.DoneFlying)
{
transform.position = RespawnToHere;
PlayerHeliPlayer.DoneFlying = false;
}
if(DSN)
{
// activates the game object.
gameObject.active = true;
}
if(Dead && !Respawn)
{
transform.position = respawn2;
Dead = false;
print("i respawned yet again!");
}
if(dead && Respawn)
{//where the player respawns
transform.position = respawn1;
dead = false;
print("i respawned!");
}
}
function OnTriggerEnter( hit : Collider )
{
if(hit.gameObject.tag == "SuddenDeath1")
{
enemyFollow.MOVE1 = false;
enemyFollow.MOVE2 = false;
enemyFollow.MOVE3 = true;
}
if(hit.gameObject.tag == "TurretSlaught2")
{
enemyFollow.MOVE1 = false;
enemyFollow.MOVE2 = true;
enemyFollow.MOVE3 = false;
}
if(hit.gameObject.tag == "MoneyMaker")
{
money += 50;
Destroy(hit.gameObject);
print("I have " +money+ " Dollars!");
}
if(hit.gameObject.tag == "fallout3" && !Respawn)
{
Dead = true;
HealthControl.LIVES -= 1;
}
if(hit.gameObject.tag == "fallout2")
{
Respawn = false;
}
//when the player falls off (this doesnt really work too good. )
if(hit.gameObject.tag == "fallout")
{
dead = true;
//subtract life here
HealthControl.LIVES -= 1;
print("i fell off...");
}
//getting hit (this works)
if(hit.gameObject.tag == "enemyProjectile")
{
gotHit = true;
HealthControl.HITS += 1;
Destroy(hit.gameObject);
print("i got hit!");
}
//manipulating weather
if(hit.gameObject.tag == "weather")
{
ParticleEmitToggle.WCONTROL = true;
print("Now i can control weather.");
}
//level select button controls
if(hit.gameObject.tag == "Level2")
{
GUIshader.Level2 = true;
print("hit level two");
}
if(hit.gameObject.tag == "Level3")
{
GUIshader.Level3 = true;
print("hit level three");
}
if(hit.gameObject.tag == "Level4")
{
GUIshader.Level4 = true;
print("hit level four");
}
if(hit.gameObject.tag == "Level5")
{
GUIshader.Level5 = true;
print("hit level five");
}
if(hit.gameObject.tag == "WORK")
{
MovingPlatform4.work = true;
}
}
/// 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.
var speed : float = 6.0;
var jumpSpeed : float = 8.0;
var gravity : float = 20.0;
var Character : Transform;
private var moveDirection = movement;
function Update()
{
var controller : CharacterController = GetComponent(CharacterController);
if (controller.isGrounded) {
if(auto)
{
movement = transform.forward * speed;
print("Automatic");
}
else
{
movement = Vector3(Input.GetAxis("Horizontal"), 0,
Input.GetAxis("Vertical"));
movement = transform.TransformDirection(movement) * speed;
}
//jumping
if (Input.GetButton ("Jump")) {
movement.y = jumpSpeed;
print("I'm jumping!");
}
}
// Apply gravity
movement.y -= gravity * Time.deltaTime;
// Move the controller
controller.Move(movement * Time.deltaTime);
//main menu button
if(Input.GetKeyDown("escape"))
{
Application.LoadLevel("Main Menu");
print("Main Menu Loading...");
}
//shooting
if(Input.GetKeyDown("f"))
{
if(Input.GetKey("left shift"))
{
auto = true;
print("auto");
}
if(Input.GetKey("right shift"))
{
auto = false;
print("!auto");
}
if(!UseBetterBullet && !constant)
{
var bullit = Instantiate(bullitPrefab, gameObject.Find("spawnPoint").transform.position,
Quaternion.identity);
bullit.tag = "wormProjectile";
//shoots it forward
bullit.rigidbody.AddForce(transform.forward * 3500);
}
if(UseBetterBullet)
{
particleEmitter.emit = true;
Invoke("DestroyEmitter",1);
}
}
//prints your score
print("Score: "+SCORE);
//changes your score
switch(SCORE)
{
case 10:
Application.LoadLevel("Main Menu");
break;
}
}
function DestroyEmitter()
{
if(Time.time*1.5 > 7.5)
particleEmitter.emit = false;
}
@script RequireComponent(CharacterController)
There's a lot of stuff here and I'm not sure which parts you still need, but to do something on key-press (ctrl+F) would be something like:
if(Input.GetKey("left ctrl") && Input.GetKeyDown("f")) DoSomething();
You have this object with a character controller and Character with a Rigidbody. If this script is all to move the same character, you really shouldn't be trying to use both.
So your script modified would be something like:
var controller : CharacterController;
var speed : float = 6.0;
var jumpSpeed : float = 8.0;
var gravity : float = 20.0;
var bulletPrefab : Transform;
private var auto : boolean = false;
private var movement : Vector3 = Vector3.zero;
private var spawnPoint : Transform;
function Start() {
controller = GetComponent(CharacterController);
}
function Update() {
if(Input.GetKeyDown("f")) {
//auto
if(Input.GetKey("left ctrl")) auto = !auto;
else { //shooting
//If your spawnpoint doesn't change, you could move this
//to start since it will always find the same one or
//you could just store a reference to the Transform.
//Also GameObject.Find is very slow/expensive so you are
//better off tagging and using FindWithTag in stead
spawnPoint = GameObject.FindWithTag("SpawnPoint").transform;
var bullet : Transform = Instantiate(bulletPrefab,
spawnPoint.position, spawnPoint.rotation);
//If you tag the prefab, you don't need this
//bullet.tag = "wormProjectile";
//If you set this on the prefab, you don't need this
//bullet.rigidbody.useGravity = false;
bullet.rigidbody.AddForce(transform.forward * 3500);
}
}
if (controller.isGrounded) {
//movement
if(auto) movement = transform.forward * speed;
else {
movement = Vector3(Input.GetAxis("Horizontal"), 0,
Input.GetAxis("Vertical"));
movement = transform.TransformDirection(movement) * speed;
}
//jumping
if(Input.GetButton("Jump")) movement.y = jumpSpeed;
}
// Apply gravity
movement.y -= gravity * Time.deltaTime;
//apply movement
controller.Move(movement * Time.deltaTime);
//main menu button
if(Input.GetKeyDown("escape"))
Application.LoadLevel("Main Menu");
}