我希望在使用OnMouseDrag
将其拖动到正确位置后冻结游戏对象答案 0 :(得分:0)
有很多方法可以做到这一点。我假设您从脚本移动所有内容,因此无论您何时更新对象的位置,都可以使用简单的if语句阻止它更新。
在伪代码中:
void Update(){
if(isInRightPosition(yourGameObject) == false){
you are free to update the position
}else{
do nothing and the object will remain in same position;
}
}
bool isInRightPosition(yourGameObject){
return yourConditionalExpression;
}
如果这不起作用,因为您正在使用其他工具来更新对象的位置,您还可以在放置好对象时在本地保存对象的正确位置,并且只需更新它即可。固定更新函数中每一帧的位置,如果它涉及物理,或者如果不涉及更新功能,那么即使用户想要移动它,你的代码也会重置它。
因此,您的更新功能与
类似现在是C#代码:
Vector3 lockedPosition = new Vector3(myX, myY, myZ);
void Update(){
Rigidbody rigidbody = GetComponent<RigidBody>();
if(isInRightPosition(yourGameObject) == true){
rigidbody.position = lockedPosition;
}else{
/*let the player move the object*/
}
}
此外,您可以根据需要在您使用的事件处理程序中应用此逻辑。