public void Initialize(IProjectileCannon owner, int frameId, int subFrameId, Vector3 localVelocity, RespondTo terminateOn, RespondTo damageOn, float timeshift = 0) { this.owner = owner; // Convert velocity from local to global this.velocity = transform.TransformDirection(localVelocity); this.terminateOn = terminateOn; this.damageOn = damageOn; this.frameId = frameId; this.subFrameId = subFrameId; if (timeshift != 0) { LagCompensate(timeshift); } else { snapPos = transform.position; } if (useRbForces) { //rb.position = transform.position; rb.MovePosition(snapPos); rb.velocity = this.velocity; } /// TODO: NOT TESTED else if (rb2d) { //rb2d.position = transform.position; rb2d.MovePosition(snapPos); rb2d.velocity = this.velocity; } else { transform.position = snapPos; targPos = snapPos + velocity * Time.fixedDeltaTime; transform.position = snapPos; } localContactTrigger.Proxy = owner.ContactTrigger; }
public void Initialize(IProjectileLauncher owner, int frameId, int subFrameId, Vector3 velocity, RespondTo terminateOn, RespondTo damageOn) { this.owner = owner; this.velocity = velocity; this.terminateOn = terminateOn; this.damageOn = damageOn; this.frameId = frameId; this.subFrameId = subFrameId; if (rb) { rb.velocity = rb.rotation * velocity; } /// TODO: NOT TESTED else if (rb2d) { rb2d.velocity = rb2d.transform.TransformVector(velocity); } snap = transform.position; targ = transform.position; localContactTrigger.Proxy = owner.ContactTrigger; }