- Home /
Adding force to a 2d object in specified direction not working?
So I have this boss, it's supposed to punch the player in the direction the boss is facing, like a knockback. This wont work though, I cant figure out why. Any ideas or tips?
Also I know its a very messy script, spent all day
(It's the Knockback function the problem lies I'm pretty sure)
#pragma strict
var Distance : float;
var Health = 200;
var AggroRadius = 5.0;
var target : Transform;
var MoveSpeed = 7;
var AttackRange = 5;
var Aggroed = false;
var inAttackRange = false;
var StartMoving = false;
var FacingRight = true;
var xPositionDraugr = 0;
var anim : Animator;
var flipside = 0;
function Start ()
{
}
function Update ()
{
if (GetComponent(Mermaid).xPositionMermaid < xPositionDraugr)
flipside = 0;
else
flipside = 1;
if (flipside > 0 && !FacingRight)
Flip();
else if(flipside < 1 && FacingRight)
Flip();
xPositionDraugr = transform.position.x;
Distance = Vector2.Distance(transform.position, target.transform.position);
if (Distance < AggroRadius) {
Aggroed = true;
return;
}
if (Aggroed == true && StartMoving == true) {
MoveToTarget();
}
if (Distance < AttackRange) {
inAttackRange = true;
StartMoving = false;
}
if (inAttackRange == true) {
StartMoving = false;
KnockBack();
}else {
StartMoving = true;
}
//find spilleren
//gå hen mod ham
}
function MoveToTarget()
{
var delta = target.transform.position - transform.position;
delta.Normalize();
var moveSpeed = MoveSpeed * Time.deltaTime;
anim.SetInteger("Speed", MoveSpeed);
transform.position = transform.position + (delta * moveSpeed);
}
function KnockBack() {
Debug.Log("knockbcked");
if (FacingRight == true) {
target.rigidbody2D.AddRelativeForce (-10, 0, 0);
} else {
target.rigidbody2D.AddRelativeForce (10, 0, 0);
}
//GetComponent(Mermaid).Health-= 23;
}
function Flip () {
Debug.Log("flippin");
FacingRight = !FacingRight;
var theScale : Vector3 = transform.localScale;
theScale.x *= -1;
transform.localScale = theScale;
}
Well, actually the first thing that comes to $$anonymous$$d is that your code can only work if the target object is controlled by physics. If you're setting it's position or velocity, like using transform.Translate or some equivalent, adding force to it will be irrelevant.
Your answer
Follow this Question
Related Questions
Pixel Perfect 2 Answers
Instantiate Object position C#, not visible after new pos 1 Answer
Move object by the size of the object? (Unity2D) 1 Answer
Changing size of a 2d object 1 Answer
Deteriorating force on object? 0 Answers