transform.position to Rigidbody.AddForce
I am working on a game where the sprite follows the mouse clicks. I need to add boxcolliders for scoring points and boundaries. I've tried void OnCollisionEnter (Collision col)
, and that doesnt work. Here is my code. using UnityEngine; using System.Collections;
public class player : MonoBehaviour {
public float speed = 1.5f;
private Vector3 target;
void Start () {
target = transform.position;
}
void Update () {
var mouse = Input.mousePosition;
var screenPoint = Camera.main.WorldToScreenPoint(transform.localPosition);
var offset = new Vector2(mouse.x - screenPoint.x, mouse.y - screenPoint.y);
var angle = Mathf.Atan2(offset.y, offset.x) * Mathf.Rad2Deg;
if (Input.GetMouseButtonDown(0)) {
target = Camera.main.ScreenToWorldPoint(Input.mousePosition);
target.z = transform.position.z;
transform.rotation = Quaternion.Euler(0, 0, angle);
}
transform.position = Vector3.MoveTowards(transform.position, target, speed * Time.deltaTime);
}
}
All i need is to change Transfor.position to Rigidbody.addforce:)
Answer by Foulcloud · Aug 25, 2015 at 04:52 PM
OnCollisionEnter() will require a rigidbody on the player as well as a collider that is not set as a trigger. If you want to use triggers instead, you will need to use OnTriggerEnter(Collider owner).
Answer by SuperRaed · Aug 25, 2015 at 08:22 PM
it's a very interesting challenge I thinkyou are going to need to write your own physics, how much force is needed to move an object with a given mass(Rigidbody().mass) this much distance (vector3 diferrence between current position and target) ? you still going to need time or velocity in order to calculate force(as far as I know).
one way you can do this is to add a reasonable amount of force to that object that's not too fast and then using either
1- a trigger to check if object has reached target to cut off the veocity through GetComponent(RigidBody)().velocity= Vector3.Zero;
2-this may sound a little crazy but you can dynamically add invisible barriers that will actually collide with gameobject and hold it in place, the should have friction set to max.
keep us updated with what you find out :)