wouldnt it rotate the TeleportPoint instead of the objectToTeleport (the player)?
by user 198447544408342528
wouldnt it rotate the TeleportPoint instead of the objectToTeleport (the player)?
by user 198447544408342528
Updated the reply forgot to pass in the object. And you can pass in the whole vector
I will point out that since objectToTeleport is marked with β?β, I had to add β!β and also since RigidBody isnβt isObject3D, I had to pass in .gameObject. Result:
setWorldRotation(this.objectToTeleport!.gameObject, rotation);
by user 198447544408342528
Will try it RN and update
by user 198447544408342528
Ah ok sorry wasnt paying attention
I think easy access on the gameObject to worldpos etc itself would be very useful so Iβll look into adding this now (and being able to set it)
Not sure why threejs doesnt make this easier ^^
I tried what we got to and it still did not work.
Would love any other ideas
by user 198447544408342528
One second - will repro
this is the final code for your reproduction:
import { Behaviour, Rigidbody, getWorldPosition, getWorldRotation, serializable, setWorldRotation } from "@needle-tools/engine"
export class TeleportPoint extends Behaviour {
/** The object to move on teleport */
@serializable(Rigidbody) objectToTeleport?: Rigidbody;
public teleport(){
// teleport
this.objectToTeleport?.teleport(getWorldPosition(this.gameObject));
// rotate
let rotation = getWorldRotation(this.gameObject);
setWorldRotation(this.objectToTeleport!.gameObject, rotation);
}
}```
*by user 198447544408342528*
Waiting for your update! Thank you!
by user 198447544408342528
import { Behaviour, GameObject, Rigidbody, getWorldPosition, getWorldRotation, serializable, setWorldRotation } from "@needle-tools/engine"
export class TeleportPoint extends Behaviour {
@serializable(GameObject)
target!: GameObject;
/** The object to move on teleport */
@serializable(Rigidbody) objectToTeleport?: Rigidbody;
private _start!: GameObject;
start() {
this._start = this.objectToTeleport!.gameObject.parent as GameObject;
let i = 0;
setInterval(() => {
i++;
let target = i % 2 == 0 ? this.target : this._start;
// teleport
this.objectToTeleport?.teleport(getWorldPosition(target), false);
// rotate
let rotation = getWorldRotation(target);
setWorldRotation(this.objectToTeleport!.gameObject, rotation)
}, 1000)
}
}
sorry teleport
has a second argument which is βfalseβ by default and assumes local space
thatβs what the script does ^^
The next version will make this possible
It looks like it rotates for you but it wonβt for me. What am I missing?
by user 198447544408342528
Good question ^^
maybe I should draw a line to point to where I am trying to rotate my character or somthing, the rotation does not work for me at all
by user 198447544408342528