- Home /
Trying to Lerp knock-back on Character Controller
Hey guys.
I'm trying to Lerp and smooth out a movement for my melee weapons. Its a top-down shooter style game.
Here's my melee script.
public void OnTriggerEnter(Collider other)
{
Vector3 dir = other.transform.position - transform.position;
dir.y = 0;
if (other.rigidbody)
{
if(swinging)
{
other.rigidbody.AddForce (dir.normalized * force);
}
}
if (other.gameObject.tag == "Enemy")
{
var aiHealth = other.gameObject.GetComponent<ZombieDeathScript>();
if(swinging)
{
CharacterController controller = other.gameObject.GetComponent<CharacterController>();
aiScript = other.gameObject.GetComponent<AIFollow>();
Vector3 bashDir = other.transform.TransformDirection(Vector3.back);
other.transform.position = Vector3.Lerp(transform.position, transform.position + bashDir, pushSpeed);
//controller.SimpleMove(bashDir * Time.deltaTime * pushSpeed);
aiScript.speed = 2.5f;
aiHealth.health -= damage;
audio.clip = sounds[Random.Range(0,sounds.Length)];
audio.Play();
Invoke("ResetSpeed", 2);
}
}
}
void ResetSpeed ()
{
aiScript.speed = 5;
}
The problem is, the knock-back is instant, I want it to knock the enemy back slowly. The enemies use Character Controllers, I had them as rigidbodies before, but recently changed. And that's why I'm asking for some help. :)
Answer by bluesyhfang · Jun 13, 2014 at 01:53 PM
Take a look at the solution in http://answers.unity3d.com/questions/502798/object-push-character-controller.html
impact = Vector3.Lerp(impact, Vector3.zero, 5*Time.deltaTime);
This will slow down the knock back.
Your answer
Follow this Question
Related Questions
Fire Knockback 3 Answers
Vector3.Lerp result in "laggy" movement while running on iOS devices 2 Answers
Start Camera Lerp from diffrent script? 1 Answer
Knockback in 2d shooter 1 Answer
How to update interval between objects in run time? 0 Answers