To make an object “point” and “shoot” another object in a 3D scene, you can use vector math to calculate the direction from the first object to the second object, and then use this direction to orient the first object towards the second object. Here’s an example of how you can do this in Unity using C#:
// Calculate the direction from the first object (source) to the second object (target) Vector3 direction = (target.transform.position - source.transform.position).normalized; // Rotate the first object (source) towards the second object (target) source.transform.rotation = Quaternion.LookRotation(direction); // "Shoot" the second object by instantiating a projectile and setting its velocity GameObject projectile = Instantiate(projectilePrefab, source.transform.position, source.transform.rotation); projectile.GetComponent<Rigidbody>().velocity = direction * projectileSpeed;
This code calculates the direction from the source object to the target object by subtracting the target’s position from the source’s position, and then normalizes the result to create a unit vector that represents the direction. It then uses the
LookRotation method to set the rotation of the source object to point towards the target object. Finally, it instantiates a projectile object and sets its velocity to move it in the direction of the target.
Last modified: March 3, 2023