I am trying to make a portal component for my game, that will get the velocity of the object passing through and the angle of the portal that it is going to and the one it is passing and calculate the direction it will be going in and with how much velocity it should have.
I have figured out a solution, apart from how to rotate the vector from the entry portal to the exit, so that the velocity can be rotated appropriately.
//Idea is to make the portals dynamics, able to be used in 3 dimensions and at different rotations, so that the RG Machine can
// use them to make use of dual channels of reactions
public Portal portal; // Linked Portal
protected bool CanTP = true; // Will Determine if the portal can be used
private Rigidbody RG; // Reference to the RigidBody of the Object passing through Portal
private Vector3 EntryVelocity; // Value of the Objects velocity as it collides with first portal
private float angleDifference = 0.0f; //Value of the difference in angles between the vectors of the linked portals
public Portal self; // reference to self
void OnTriggerEnter (Collider other)
{
if (CanTP) {
//
Start = self.GetComponentInParent();
//Gets the RigidBody of the object colliding with the box
RG = other.gameObject.GetComponent ();
// Gets the Velocity of the object when it collides with the object
EntryVelocity = (RG.velocity);
// Sets the postion of the object to the position of the linked portal
portal.CanTP = false; // Fix this later
other.gameObject.transform.SetPositionAndRotation(portal.gameObject.transform.position, portal.gameObject.transform.rotation);
// This sets the transform for the colliding object to the transform of the linked portal
Debug.Log ("Portal Position Rotation" + portal.gameObject.transform.position + portal.gameObject.transform.rotation);
Debug.Log ("Object Position Rotation" + other.gameObject.transform.position + other.gameObject.transform.rotation);
angleDifference = Vector3.Angle (self.transform.position, portal.gameObject.transform.position);
// Gets the angle difference between the owning object's position, and the linked portal's position
//This is where I am stuck as I don't know what code to put in here
RG.AddForce(EntryVelocity);
// This will add the velocity as a force, if there is a better way, please let me know
}
}
}
↧