- Home /
need help with character rotating when hit
Hello there names ovidicus I am currently doing a project for my computer class at school and decided to use unity
I have been doing pretty well: learning script, modeling, animation, textures, etc. Been watching alot of tutorials to
Well i know this tutorial is old but, i am stuck on it It is tutorial # 15 with the TornadoTwins (they are very helpful :))
Ok well i typed in all the code of making my Turret shoot and hit me which is the Turretcontrol and Movearound script
I don't know if i did something wrong but, i get no errors
Move around script: (sorry if it looks bad :( i didnt format i think) And everything i coded was exactly based off their scripts. I have spent about an hour and a half looking back and forth at the video and each script was their exact script
// Moving around
var speed = 3.0;
var rotateSpeed = 3.0;
// Shooting
var bullitPrefab:Transform;
private var dead = false;
// Getting hit
var tumbleSpeed = 800;
var decreaseTime = 0.01;
var decayTime = 0.01;
static var gotHit = false;
private var backup = [tumbleSpeed, decreaseTime, decayTime];
function LateUpdate()
{
if (gotHit)
{
if(tumbleSpeed < 1)
{
//we're not hit anymore get up and win son
tumbleSpeed = backup[0];
decreaseTime = backup[1];
decayTime = backup[2];
gotHit = false;
}
else
{
//just go hit
transform.Rotate(0, tumbleSpeed * Time.deltaTime, 0, Space.World);
tumbleSpped = tumbleSpeed-decreaseTime;
decreaseTime += decayTime;
}
}
}
function OnControllerColliderHit(hit : ControllerColliderHit)
{
if(hit.gameObject.tag == "fallout")
{
dead = true;
//substract life here
healthcontrol.LIVES -= 1;
}
if(hit.gameObject.tag == "enemy")
{
gotHit = true;
}
}
function Update()
{
var controller : CharacterController = GetComponent( CharacterController );
// Rotate around y - axis
transform.Rotate( 0, Input.GetAxis( "Horizontal" ) * rotateSpeed, 0);
// Move Forward/ backward
var forward = transform.TransformDirection( Vector3.forward);
var curSpeed = speed * Input.GetAxis("Vertical");
controller.SimpleMove( forward * curSpeed );
if(Input.GetButtonDown("Fire1"))
{
var bullit = Instantiate(bullitPrefab,
GameObject.Find("spawnpoint").transform.position,
Quaternion .identity);
bullit.rigidbody.AddForce(transform.forward * 2000);
}
}
@script RequireComponent( CharacterController );
And the turret control script:
var LookAtTarget:Transform;
var damp = 6.0;
var bullitPrefab:Transform;
var savedTime=0;
function Update ()
{
if(LookAtTarget)
{
var rotate = Quaternion.LookRotation(LookAtTarget.position - transform.position);
transform.rotation = Quaternion.Slerp(transform.rotation, rotate, Time.deltaTime * damp);
var seconds : int = Time.time;
var oddeven = (seconds % 2);
if(oddeven)
{
Shoot(seconds);
}
}
}
function Shoot(seconds)
{
if(seconds!=savedTime)
{
var bullit = Instantiate(bullitPrefab ,transform.Find("spawnpoint2").transform.position ,
Quaternion.identity);
bullit.gameObject.tag = "enemy";
bullit.rigidbody.AddForce(transform.forward * 1500);
savedTime=seconds;
}
}
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
When I look down and move forward, I fly upwards 0 Answers
I have a problem with my parkour C# script on final lines 0 Answers
Aiming, Camera Orbit 0 Answers
What is wrong with this script? 2 Answers