meta data for this page
📚 差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
scripting:world:model [2023/11/06 13:28] – bibiboxs | scripting: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: |
/* | /* | ||
model:触发实例 | model:触发实例 | ||
行 28: | 行 28: | ||
type:伤害类型 | type:伤害类型 | ||
isImmunity:是否免疫伤害(如果为true,则表示没有造成伤害,可能被Immunity\Group拦截了) | isImmunity:是否免疫伤害(如果为true,则表示没有造成伤害,可能被Immunity\Group拦截了) | ||
+ | localHitPos:受击位置的本地坐标 | ||
*/ | */ | ||
``` | ``` | ||
行 102: | 行 103: | ||
> 设置模型对象标签,此处的`Model.Tag`与基类`Entity.Tag`共用属性,并非单独的Tag属性。 | > 设置模型对象标签,此处的`Model.Tag`与基类`Entity.Tag`共用属性,并非单独的Tag属性。 | ||
+ | > | ||
+ | > 此属性设置为**非空值**将会同步提交到`TagList`(可使用API遍历),空值(默认)不会进行提交。 | ||
```javascript | ```javascript | ||
行 125: | 行 128: | ||
```javascript | ```javascript | ||
model.Health = 0; //int | model.Health = 0; //int | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### model.Flags | ||
+ | |||
+ | > 设置模型对象的`Flags`属性值(可叠加位Flag),参考[《模型对象特殊属性》](reference/ | ||
+ | |||
+ | ```javascript | ||
+ | model.Flags = 0; //int | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### model.Immunity | ||
+ | |||
+ | > 设定模型对象的[免疫属性](reference/ | ||
+ | |||
+ | ```javascript | ||
+ | model.Immunity = 0; //int | ||
+ | |||
+ | // | ||
+ | // | ||
+ | model.Immunity = 2 + 4; // | ||
``` | ``` | ||
行 191: | 行 218: | ||
### model.Collision | ### model.Collision | ||
- | > 设置模型对象是否存在碰撞逻辑,默认为`false`,通常情况下不需要进行修改。 | + | > 设置模型对象是否开启碰撞逻辑,默认为`true`。 |
```javascript | ```javascript | ||
行 229: | 行 256: | ||
- | ### model.Range | + | ### model.StringValue |
- | > 设置模型对象的`Range`属性值,不同类型的模型可能有不同的作用(或默认值)。 | + | > 设置模型对象的`StringValue`属性值,不同类型的模型可能有不同的作用(或默认值)。 |
```javascript | ```javascript | ||
- | model.Range = 0.0; //float | + | model.StringValue |
``` | ``` | ||
- | ### model.Intensity | + | ### model.Range |
- | > 设置模型对象的`Intensity`属性值,不同类型的模型可能有不同的作用(或默认值)。 | + | > 设置模型对象的`Range`属性值,不同类型的模型可能有不同的作用(或默认值)。 |
```javascript | ```javascript | ||
- | model.Intensity | + | model.Range = 0.0; //float |
``` | ``` | ||
- | ### model.IsShine | + | ### model.Intensity |
- | > 设置模型对象明亮模式(始终保持亮度,不受光照及阴影影响)。 | + | > 设置模型对象的`Intensity`属性值,不同类型的模型可能有不同的作用(或默认值)。 |
- | > | + | |
- | > **注意:此选项会和`Emission`模式冲突,两者只能同时生效一个,自发光优先。** | + | |
```javascript | ```javascript | ||
- | model.IsShine | + | model.Intensity |
``` | ``` | ||
行 283: | 行 308: | ||
### model.Emission | ### model.Emission | ||
- | > 设置模型对象自发光开关(低配玩家可能不会启用附带的光源效果)。 | + | > 设置模型对象**发光亮度倍数**,默认为`0.0`(原始亮度),如果希望增加亮度(或者高光)至少需要修改数值> |
- | > | + | > |
- | > **注意:此选项会和`IsShine`模式冲突,两者只能同时生效一个,自发光优先。** | + | > **注意:这里的“高光”仅指亮度渲染效果,实际光源渲染与`Light`有区别,不会有真正的光源照射效果。** |
```javascript | ```javascript | ||
- | model.Emission = false; //bool | + | model.Emission = 0.0; //float |
``` | ``` | ||
- | |||
- | |||
- | |||
- | ### model.EmissionColor | ||
- | |||
- | > 设置模型对象自发光颜色,默认为白色`Color(255, | ||
```javascript | ```javascript | ||
- | model.EmissionColor | + | model.Emission |
+ | model.Emission = 1.0; //Enable, but default(1*1=1) | ||
+ | model.Emission = 2.0; //Enable, brightness(1*2=2) | ||
``` | ``` | ||
- | |||
- | |||
- | |||
- | ### model.EmissionIntensity | ||
- | |||
- | > 设置模型对象自发光强度,默认为`1.0`。 | ||
- | |||
- | ```javascript | ||
- | model.EmissionIntensity = 1.0; //float | ||
- | ``` | ||
- | |||
行 332: | 行 342: | ||
### Model.CreateEffect() | ### Model.CreateEffect() | ||
+ | |||
+ | [note2] | ||
+ | 此方法在V0.8+被弃用。 | ||
+ | [/note] | ||
> 生成一个新的**效果对象实例(粒子等)**(由此生成的全部为动态对象),效果索引参考**[《世界资源实例汇总——粒子效果表格》](reference/ | > 生成一个新的**效果对象实例(粒子等)**(由此生成的全部为动态对象),效果索引参考**[《世界资源实例汇总——粒子效果表格》](reference/ | ||
行 337: | 行 351: | ||
> 不同索引代表的效果样式不同,效果周期可能是**循环播放、单次播放**等,==由此代码生成的**单次播放**对象会在播放结束后自动销毁,但**循环播放**的对象永远不会,直到手动`Remove()`对象==。 | > 不同索引代表的效果样式不同,效果周期可能是**循环播放、单次播放**等,==由此代码生成的**单次播放**对象会在播放结束后自动销毁,但**循环播放**的对象永远不会,直到手动`Remove()`对象==。 | ||
> | > | ||
- | > **注意:此方法相当于`Model.Create()`的扩展快速方法,帮助开发者快速生成效果对象,其原理仍然基于模型类。** | + | > **注意:此方法相当于`Model.Create()`的扩展快速方法,帮助开发者快速生成效果对象,其原理仍然基于`Model`类。** |
+ | |||
+ | [note3] | ||
+ | 注意:此方法在内部基于`Model+DynamicObject`实现,因此有**额外的性能开销**。 | ||
+ | |||
+ | 如果不需要关于`Model API`的相关功能,建议优先使用`World.CreateEffect() | Client.CreateEffect()`生成效果对象实例。 | ||
+ | [/note] | ||
```javascript | ```javascript | ||
行 439: | 行 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: |
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### model.ExistFlag() | ||
+ | |||
+ | > 获取模型对象`Flags`是否已激活指定的`Flag`。 | ||
+ | |||
+ | ```javascript | ||
+ | function model.ExistFlag( flag: int ): bool | ||
``` | ``` | ||
行 455: | 行 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) ); // | ||
``` | ``` | ||
行 494: | 行 541: | ||
function model.ScaleTo( scale: Vector, time: float ) | function model.ScaleTo( scale: Vector, time: float ) | ||
``` | ``` | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||