meta data for this page
  •  

📚 差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
scripting:world:model [2023/09/21 23:56] bibiboxsscripting:world:model [2025/05/25 15:56] (当前版本) bibiboxs
行 16: 行 16:
 ## Event ## Event
  
-### OnModelDamage( model, damage, from, type, isImmunity )+### OnModelDamage( model, damage, from, type, isImmunity, localHitPos )
  
 > 当模型对象被攻击时调用,**攻击检测应该优先考虑此事件**。 > 当模型对象被攻击时调用,**攻击检测应该优先考虑此事件**。
  
 ```javascript ```javascript
-function OnModelDamage( model: Model, damage: int, from: Entity, type: int, isImmunity: bool )+function OnModelDamage( model: Model, damage: int, from: Entity, type: int, isImmunity: bool, localHitPos: Vector )
 /* /*
  model:触发实例  model:触发实例
行 28: 行 28:
  type:伤害类型  type:伤害类型
  isImmunity:是否免疫伤害(如果为true,则表示没有造成伤害,可能被Immunity\Group拦截了)  isImmunity:是否免疫伤害(如果为true,则表示没有造成伤害,可能被Immunity\Group拦截了)
 + localHitPos:受击位置的本地坐标
 */ */
 ``` ```
行 95: 行 96:
 ```javascript ```javascript
 model.Group = 0; //int model.Group = 0; //int
 +```
 +
 +
 +
 +### model.Tag
 +
 +> 设置模型对象标签,此处的`Model.Tag`与基类`Entity.Tag`共用属性,并非单独的Tag属性。
 +
 +> 此属性设置为**非空值**将会同步提交到`TagList`(可使用API遍历),空值(默认)不会进行提交。
 +
 +```javascript
 +model.Tag = "";
 +```
 +
 +
 +
 +### model.ModelID
 +
 +> 获取(只读)对象的模型ID。
 +
 +```javascript
 +model.ModelID: int
 ``` ```
  
行 105: 行 128:
 ```javascript ```javascript
 model.Health = 0; //int model.Health = 0; //int
 +```
 +
 +
 +
 +### model.Flags
 +
 +> 设置模型对象的`Flags`属性值(可叠加位Flag),参考[《模型对象特殊属性》](reference/instances "模型对象特殊属性")。
 +
 +```javascript
 +model.Flags = 0; //int
 +```
 +
 +
 +
 +### model.Immunity
 +
 +> 设定模型对象的[免疫属性](reference/instances "免疫属性")(可叠加位Flag),设置为`-1`自动识别完全免疫(所有Flag相加后的结果)。
 +
 +```javascript
 +model.Immunity = 0; //int
 +
 +//可根据具体需求叠加属性
 +//示例:无视子弹和爆炸伤害,其他正常
 +model.Immunity = 2 + 4; //或直接设为6
 ``` ```
  
行 171: 行 218:
 ### model.Collision ### model.Collision
  
-> 设置模型对象是否存在碰撞逻辑,默认为`false`,通常情况下不需要进行修改+> 设置模型对象是否开启碰撞逻辑,默认为`true`。
  
 ```javascript ```javascript
行 189: 行 236:
  
  
-### model.IsShine+### model.Enum
  
-> 设置模型对象明亮模式(始终保持亮度,不受光照及阴影影响)。 +> 设置模型对象的`Enum`属性值,不同类型的型可有不的作用(或默认值)
-+
-> **注意:此选项会和`Emission`式冲突,两者只能同时生效一个,自发光优先**+
  
 ```javascript ```javascript
-model.IsShine false; //bool+model.Enum 0; //int
 ``` ```
  
  
  
-### model.BoundSize+### model.BoolValue
  
-获取模型原始尺寸计算似面积,会随着对象缩放尺寸而改变+设置模型对象的`BoolValue`属性,不同型的模型可能有不同的作用(或默认值)。
  
 ```javascript ```javascript
-model.BoundSize: float //数字越大表示尺寸越大,根据内置标准的尺寸规范计算+model.BoolValue = false; //bool
 ``` ```
  
  
  
-### model.Emission+### model.StringValue
  
-> 设置模型对象自发光开关(低配玩家可能不会启用附带光源效果)。 +> 设置模型对象的`StringValue`属性值不同类型的模型可有不的作用(或默认值)
-+
-> **注意:此选项会和`IsShine`模式冲突两者只能同时生效一个,自发光优先**+
  
 ```javascript ```javascript
-model.Emission false; //bool+model.StringValue ""; //string
 ``` ```
  
  
  
-### model.EmissionColor+### model.Range
  
-> 设置模型对象自发光颜色,默认为白色`Color(255, 255, 255)`+> 设置模型对象的`Range`属性值不同类型的模型可能有不同的作用(或默认值)
  
 ```javascript ```javascript
-model.EmissionColor Color(255, 255, 255); //Color+model.Range 0.0; //float
 ``` ```
  
  
  
-### model.EmissionIntensity+### model.Intensity
  
-> 设置模型对象自发光强度,默认为`1.0`+> 设置模型对象的`Intensity`属性值不同类型的模型可能有不同的作用(或默认值)
  
 ```javascript ```javascript
-model.EmissionIntensity 1.0; //float+model.Intensity 0.0; //float
 ``` ```
  
 +
 +
 +### model.BoundSize
 +
 +> 获取模型原始尺寸计算值(类似面积),会随着对象缩放尺寸而改变。
 +
 +```javascript
 +model.BoundSize: float //数字越大表示尺寸越大,根据内置标准的尺寸规范计算
 +```
 +
 +
 +
 +### model.HasParent
 +
 +> 获取模型是否拥有绑定的父物体或节点(只读)。
 +
 +```javascript
 +model.HasParent: bool
 +```
 +
 +
 +
 +### model.Emission
 +
 +> 设置模型对象**发光亮度倍数**,默认为`0.0`(原始亮度),如果希望增加亮度(或者高光)至少需要修改数值>1,反之则表示降低亮度。
 +
 +> **注意:这里的“高光”仅指亮度渲染效果,实际光源渲染与`Light`有区别,不会有真正的光源照射效果。**
 +
 +```javascript
 +model.Emission = 0.0; //float
 +```
 +
 +```javascript
 +model.Emission = 0.0; //Disable
 +model.Emission = 1.0; //Enable, but default(1*1=1)
 +model.Emission = 2.0; //Enable, brightness(1*2=2)
 +```
  
  
行 262: 行 342:
  
 ### Model.CreateEffect() ### Model.CreateEffect()
 +
 +[note2]
 +此方法在V0.8+被弃用。
 +[/note]
  
 > 生成一个新的**效果对象实例(粒子等)**(由此生成的全部为动态对象),效果索引参考**[《世界资源实例汇总——粒子效果表格》](reference/instances)**。 > 生成一个新的**效果对象实例(粒子等)**(由此生成的全部为动态对象),效果索引参考**[《世界资源实例汇总——粒子效果表格》](reference/instances)**。
 > >
-> 不同索引代表的效果样式不同,效果周期可能是**循环播放、单次播放**等,==由此代码生成的**单次播放**对象会在播放结束后自动销毁,但循环播放的对象永远不会,直到手动`Remove()`对象==+> 不同索引代表的效果样式不同,效果周期可能是**循环播放、单次播放**等,==由此代码生成的**单次播放**对象会在播放结束后自动销毁,但**循环播放**的对象永远不会,直到手动`Remove()`对象==
 > >
-> **注意:此方法相当于`Model.Create()`的扩展快速方法,帮助开发者快速生成效果对象,其原理仍然基于模型类。**+> **注意:此方法相当于`Model.Create()`的扩展快速方法,帮助开发者快速生成效果对象,其原理仍然基于`Model`类。** 
 + 
 +[note3] 
 +注意:此方法在内部基于`Model+DynamicObject`实现,因此有**额外的性能开销**。 
 + 
 +如果不需要关于`Model API`的相关功能,建议优先使用`World.CreateEffect() | Client.CreateEffect()`生成效果对象实例。 
 +[/note]
  
 ```javascript ```javascript
行 300: 行 390:
  
  
-### Model.FindByIndex()+### Model.GetCount()
  
-寻找一个模型对象实例通过索引),存在则返回`null`+获取当前所有存在模型对象数量(不包括静态对象)
  
 ```javascript ```javascript
-function Model.FindByIndexindex: int ): Model+function Model.GetCount(): int
 ``` ```
  
  
  
-### Model.GetCount()+### Model.Get()
  
-> 获取当前所有存在模型对象数量(不包括静态对象)+> 获取当前存在的指定索引模型对象,通常搭配`GetCount()`遍历使用
  
 ```javascript ```javascript
-function Model.GetCount(): int+function Model.Getindex: int ): Model
 ``` ```
  
  
  
-### Model.Get()+### Model.GetTagCount()
  
-> 获取当前存在指定索引模型对象,通常搭配`GetCount()`遍历使用+> 获取当前所有满足`Tag`筛选的模型对象数量(所有`Tag`为xxx的模型对象数量)
  
 ```javascript ```javascript
-function Model.Get( index: int ): Model+function Model.GetTagCounttag: string ): int 
 +``` 
 + 
 + 
 + 
 +### Model.GetByTag() 
 + 
 +> 获取当前所有满足`Tag`筛选的模型对象,通常搭配`GetTagCount()`遍历使用。 
 + 
 +```javascript 
 +function Model.GetByTag( tag: string, index: int = 0 ): Model
 ``` ```
  
行 359: 行 459:
  
 ```javascript ```javascript
-function model.Damage( damage: int, from: Entity = null, reason: int = 0 )+function model.Damage( damage: int, from: Entity = null, reason: int = 0, localHitPos: Vector = Vector(0, 0, 0) 
 +``` 
 + 
 + 
 + 
 +### model.ExistFlag() 
 + 
 +> 获取模型对象`Flags`是否已激活指定的`Flag`。 
 + 
 +```javascript 
 +function model.ExistFlag( flag: int ): bool
 ``` ```
  
行 375: 行 485:
  
 ```javascript ```javascript
-let obj = model.Create(...); +let obj = Model.Create(...); 
-obj.AddForce( Vector(0, 3, 0) ); //载具立即向上冲刺一段距离(y)+obj.AddForce( Vector(0, 3, 0) ); //对象立即向上冲刺一段距离(y) 
 +``` 
 + 
 + 
 + 
 +### model.AddTurnForce() 
 + 
 +> 增加一个当前对象的物理旋转力,默认为本地坐标系(根据参数`isLocal`)。 
 +
 +> **注意:此方法只有【动态物体+激活物理`Physics == true`】的对象可使用。** 
 + 
 +```javascript 
 +function model.AddTurnForce( force: Vector, isLocal: bool = true ) 
 +``` 
 + 
 +```javascript 
 +let obj = Model.Create(...); 
 +obj.AddTurnForce( Vector(0, 10, 0) ); //对象横向旋转
 ``` ```
  
行 414: 行 541:
 function model.ScaleTo( scale: Vector, time: float ) function model.ScaleTo( scale: Vector, time: float )
 ``` ```
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
  
  
 </markdown> </markdown>