Skip to content
RigidConstraint

Gameplay / RigidConstraint

RigidConstraint Class

Physical link component

Precautions

Server settings, double end automatic sync

Example usage: Create a script called "RigidTest", place it in the object bar, open the script, enter the following code to save, run the game, and you will see a cube and a sphere in the scene. Set the rope constraint to enable it and perform a winch effect. The code is as follows:

ts
@Component
export default class RigidTest extends Script {
    box:mw.Model;
    ball:mw.Model;
    rigid:mw.RigidConstraint;
    // When the script is instantiated, this function will be called before the first frame update
    protected onStart(): void {
        if(SystemUtil.isServer()) {

            GameObject.asyncSpawn("197386",{replicates:true}).then((obj)=>{
                this.box = obj as mw.Model;
                this.box.worldTransform.position = new Vector(200,0,1200);
            });
            GameObject.asyncSpawn("197388",{replicates:true}).then((obj)=>{
                this.ball = obj as mw.Model;
                this.ball.worldTransform.position = new Vector(100,0,100);
                // The party using the linked component must enable physical simulation
                this.ball.physicsEnabled = true;
            })
            // Create Link component Link Box and Ball
            setTimeout(()=>{
                GameObject.asyncSpawn("RigidConstraint",{replicates:true}).then((obj)=>{
                    this.rigid = obj as mw.RigidConstraint;
                    this.rigid.constraint1 = this.box;
                    this.rigid.constraint2 = this.ball;
                    this.rigid.softConstraintEnabled = true;
                    this.rigid.length = 800;
                    this.rigid.autoEnable = true;
                    // Open the hinge and pull the ball to the target position
                    setTimeout(() => {
                        this.rigid.winchEnabled = true;
                        this.rigid.winchForce = 10000;
                        this.rigid.winchSpeed = 150;
                        this.rigid.winchTarget = 200;
                    }, 5000);
                })
            }, 10000);
        }
    }
}
@Component
export default class RigidTest extends Script {
    box:mw.Model;
    ball:mw.Model;
    rigid:mw.RigidConstraint;
    // When the script is instantiated, this function will be called before the first frame update
    protected onStart(): void {
        if(SystemUtil.isServer()) {

            GameObject.asyncSpawn("197386",{replicates:true}).then((obj)=>{
                this.box = obj as mw.Model;
                this.box.worldTransform.position = new Vector(200,0,1200);
            });
            GameObject.asyncSpawn("197388",{replicates:true}).then((obj)=>{
                this.ball = obj as mw.Model;
                this.ball.worldTransform.position = new Vector(100,0,100);
                // The party using the linked component must enable physical simulation
                this.ball.physicsEnabled = true;
            })
            // Create Link component Link Box and Ball
            setTimeout(()=>{
                GameObject.asyncSpawn("RigidConstraint",{replicates:true}).then((obj)=>{
                    this.rigid = obj as mw.RigidConstraint;
                    this.rigid.constraint1 = this.box;
                    this.rigid.constraint2 = this.ball;
                    this.rigid.softConstraintEnabled = true;
                    this.rigid.length = 800;
                    this.rigid.autoEnable = true;
                    // Open the hinge and pull the ball to the target position
                    setTimeout(() => {
                        this.rigid.winchEnabled = true;
                        this.rigid.winchForce = 10000;
                        this.rigid.winchSpeed = 150;
                        this.rigid.winchTarget = 200;
                    }, 5000);
                })
            }, 10000);
        }
    }
}

Hierarchy

Table of contents

Properties

onWinchComplete: MulticastDelegate<() => void>
Trigger callback function when winch reaches target
click

Properties

onBeforeDestroyDelegate: MulticastDelegate<() => void> other
Event callback before object destruction
onCustomPropertyChange: Readonly<MulticastDelegate<(path: string, value: unknown, oldValue: unknown) => void>> other
Monitor custom attribute synchronization events
onDestroyDelegate: MulticastDelegate<() => void> other
Event callback after object destruction
onPropertyChange: Readonly<MulticastDelegate<(path: string, value: unknown, oldValue: unknown) => void>>
Monitor system replicated events

Accessors

autoEnable(): boolean
Automatically enable constraint effects at runtime
constraint1(): GameObject
Constrained object 1, the current constraint types are model, character, NPC, and vehicle, and other object constraints are invalid
constraint2(): GameObject
Constraint object 2, the current constraint type is model, character, NPC, vehicle, and other object constraint are invalid
currentDistance(): number
Distance between two constraint objects
isVisible(): boolean
Display connection line
length(): number
Set the maximum connection distance of the two constraint objects. When the current distance of the two constraint objects is greater than the connection length, the Rigid Constraint will automatically shrink, and then the two constraint objects will be pulled to the set distance
softConstraintEnabled(): boolean
After enabling the soft connection, the distance between two constrained objects cannot exceed the limit of the connection length, and can be shorter than the connection length and rotate freely. The hinge disc function can be used after opening the Soft Constraint
winchEnabled(): boolean
After opening, Soft Constraint automatically executes the effect of hinge disk
winchForce(): number
Set the tension of the winch, the larger the target mass to be pulled, the greater the required tension
winchSpeed(): number
Set winch movement speed (cm/s)
winchTarget(): number
Set the target distance of Winch movement. When the distance between two constraint objects reaches the target of Winch, stop the movement
click

Accessors

actorFlagValue(): number other
Get object tags
actorLevel(): number other
Obtain Actor Level
assetId(): string other
Retrieve the UID of the resource currently being used by the object
gameObjectId(): string other
Get the unique identification of an object (a string that uniquely identifies an object).
isDestroyed(): boolean other
Has the current object been destroyed
isReady(): boolean other
Current object status
localTransform(): Transform other
Local transformation of the current object
name(): string other
Return the current object name
netStatus(): NetStatus other
Get the current object synchronization status
parent(): GameObject other
Retrieve the current parent object
tag(): string other
Get the tag of the current object
worldTransform(): Transform other
Current object world transformation

Methods

click

Methods

addComponent<T: extends Script<T>>(constructor: (...args: unknown[]) => T: extends Script<T>, bInReplicates?: boolean): T: extends Script<T> other
Add a script component
asyncGetChildByName(name: string): Promise<GameObject> other
Asynchronous search for sub objects based on their names
asyncReady(): Promise<GameObject> other
Return after the object is ready
clone(gameObjectInfo?: GameObjectInfo): GameObject other
Copy Objects
destroy(): void other
delete object
getBoundingBox(nonColliding?: boolean, includeFromChild?: boolean, outer?: Vector): Vector other
Get the size of the object's bounding box
getBounds(onlyCollidingComponents: boolean, originOuter: Vector, boxExtentOuter: Vector, includeFromChild?: boolean): void other
Obtain object boundaries
getChildByGameObjectId(gameObjectId: string): GameObject other
Search for sub objects based on gameObjectid
getChildByName(name: string): GameObject other
Search for sub objects by name
getChildByPath(path: string): GameObject other
Find sub objects according to path
getChildren(): GameObject[] other
Obtain sub objects
getChildrenBoundingBoxCenter(outer?: Vector): Vector other
Get the center point of all child objects' bounding box (not including the parent object, if the parent object is unavailable, return [0,0,0])
getChildrenByName(name: string): GameObject[] other
Search for all sub objects by name
getComponent<T: extends Script<T>>(constructor?: (...args: unknown[]) => T: extends Script<T>): T: extends Script<T> other
Get the component of the specified type
getComponentPropertys<T: extends Script<T>>(constructor: (...args: unknown[]) => T: extends Script<T>): Map<string, IPropertyOptions> other
Get property of script component
getComponents<T: extends Script<T>>(constructor?: (...args: unknown[]) => T: extends Script<T>): T: extends Script<T>[] other
Get all component of the specified type
getCustomProperties(): string[] other
Get all customize property
getCustomProperty<T: extends CustomPropertyType>(propertyName: string): T: extends CustomPropertyType other
Get customize property
getCustomPropertyChangeDelegate(property): Readonly<MulticastDelegate<(path: string, value: unknown, oldValue: unknown) => void>> other
Event proxy triggered when a given object property is modified
getPropertyChangeDelegate(property): Readonly<MulticastDelegate<(path: string, value: unknown, oldValue: unknown) => void>> other
Event proxy triggered when a given object property is modified
getVisibility(): boolean other
Obtain whether the object is displayed
isPrefabActor(): boolean other
Return whether the current object is a prefabricated body
moveBy(velocity: Vector, isLocal?: boolean): void other
Smoothly move an object over time according to a given velocity vector
moveTo(targetPosition: Vector, time: number, isLocal?: boolean, onComplete?: () => void): void other
Smoothly move from the current position to the target position within the specified time
rotateBy(rotation: Quaternion Rotation, multiplier: number, isLocal?: boolean): void other
Rotate the object smoothly over time according to the given rotation amount
rotateTo(targetRotation: Quaternion Rotation, time: number, isLocal?: boolean, onComplete?: () => void): void other
Smoothly changes from the current rotation to the target rotation within the specified time
scaleBy(scale: Vector, isLocal?: boolean): void other
Smoothly scale objects over time using a given scaling vector per second
scaleTo(targetScale: Vector, time: number, isLocal?: boolean, onComplete?: () => void): void other
Smoothly changes from the current scale to the target scale within the specified time
setAbsolute(absolutePosition?: boolean, absoluteRotation?: boolean, absoluteScale?: boolean): void other
Set whether the object localTransform is relative to the parent object or the world
setCustomProperty(propertyName: string, value: undefined CustomPropertyType): void other
Set custom attributes
setVisibility(status: boolean PropertyStatus, propagateToChildren?: boolean): void other
Set whether the object is displayed
stopMove(): void other
Interrupt further movement of moveTo() and moveBy()
stopRotate(): void other
Interrupt further rotation from rotateTo() or rotateBy()
stopScale(): void other
Interrupt further scale from ScaleTo() or ScaleBy()
asyncFindGameObjectById(gameObjectId: string): Promise<GameObject> other
Asynchronous search for GameObject through gameObjectid
asyncGetGameObjectByPath(path: string): Promise<GameObject> other
Asynchronously find objects through path
asyncSpawn<T: extends GameObject<T>>(assetId: string, gameObjectInfo?: GameObjectInfo): Promise<T: extends GameObject<T>> other
Asynchronous construction of an object
bulkPivotTo(gameObjects: GameObject[], transforms: Transform[]): void other
Batch set position
findGameObjectById(gameObjectId: string): GameObject other
Search for objects through gameObjectid
findGameObjectByName(name: string): GameObject other
Search for objects by name
findGameObjectsByName(name: string): GameObject[] other
Search for objects by name
findGameObjectsByTag(tag: string): GameObject[] other
Get objects through customize tag
getGameObjectByPath(path: string): GameObject other
Search for objects through paths
spawn<T: extends GameObject<T>>(assetId: string, gameObjectInfo?: GameObjectInfo): T: extends GameObject<T> other
Construct an object

Properties


onWinchComplete

onWinchComplete: MulticastDelegate<() => void>

Trigger callback function when winch reaches target

Accessors


autoEnable

get autoEnable(): boolean

set autoEnable(newEnable): void

Automatically enable constraint effects at runtime

Returns

booleanEnable Status

Automatically enable constraint effects at runtime

Parameters

newEnable booleanUsage: enabled status

constraint1

get constraint1(): GameObject

set constraint1(constraintObject): void

Constrained object 1, the current constraint types are model, character, NPC, and vehicle, and other object constraints are invalid

Returns

GameObjectConstraint Object 1

Constrained object 1, the current constraint types are model, character, NPC, and vehicle, and other object constraints are invalid

Parameters

constraintObject GameObjectUsage: constraint object 1

constraint2

get constraint2(): GameObject

set constraint2(constraintObject): void

Constraint object 2, the current constraint type is model, character, NPC, vehicle, and other object constraint are invalid

Returns

GameObjectConstraint Object 2

Constraint object 2, the current constraint type is model, character, NPC, vehicle, and other object constraint are invalid

Parameters

constraintObject GameObjectUsage: constraint object 2

currentDistance

get currentDistance(): number

Distance between two constraint objects

Returns

numberDistance between two constrained objects

isVisible

get isVisible(): boolean

set isVisible(visible): void

Display connection line

Returns

booleanDisplay status

Display connection line

Parameters

visibleboolean

length

get length(): number

set length(maxLength): void

Set the maximum connection distance of the two constraint objects. When the current distance of the two constraint objects is greater than the connection length, the Rigid Constraint will automatically shrink, and then the two constraint objects will be pulled to the set distance

Returns

numberMaximum Connection Distance

Set the maximum connection distance of the two constraint objects. When the current distance of the two constraint objects is greater than the connection length, the Rigid Constraint will automatically shrink, and then the two constraint objects will be pulled to the set distance

Parameters

maxLength numberUsage: Maximum Connection Distance

softConstraintEnabled

get softConstraintEnabled(): boolean

set softConstraintEnabled(newEnable): void

After enabling the soft connection, the distance between two constrained objects cannot exceed the limit of the connection length, and can be shorter than the connection length and rotate freely. The hinge disc function can be used after opening the Soft Constraint

Returns

booleanSoft link enable status

After enabling the soft connection, the distance between two constrained objects cannot exceed the limit of the connection length, and can be shorter than the connection length and rotate freely. The hinge disc function can be used after opening the Soft Constraint

Parameters

newEnable booleanUsage: Soft link enabled status

winchEnabled

get winchEnabled(): boolean

set winchEnabled(newEnable): void

After opening, Soft Constraint automatically executes the effect of hinge disk

Returns

booleanWinch enable Status

After opening, Soft Constraint automatically executes the effect of hinge disk

Parameters

newEnable booleanUsage: Winch enable status

winchForce

get winchForce(): number

set winchForce(force): void

Set the tension of the winch, the larger the target mass to be pulled, the greater the required tension

Returns

numberSize of winch force

Set the tension of the winch, the larger the target mass to be pulled, the greater the required tension

Parameters

force numberUsage: Size of winch force

winchSpeed

get winchSpeed(): number

set winchSpeed(speed): void

Set winch movement speed (cm/s)

Returns

numberWinch movement speed

Set winch movement speed (cm/s)

Parameters

speed numberUsage: Winch movement speed

winchTarget

get winchTarget(): number

set winchTarget(targetLength): void

Set the target distance of Winch movement. When the distance between two constraint objects reaches the target of Winch, stop the movement

Returns

numberTarget distance of winch

Set the target distance of Winch movement. When the distance between two constraint objects reaches the target of Winch, stop the movement

Parameters

targetLength numberUsage: Winch target distance

Methods