refactor(3d-situational-awareness): **更新动画行为至末端停止并调整设备速度**
将计时范围从 `LOOP_STOP` 更改为 `CLAMPED`,以防止动画循环。 同时将设备实体的速度乘数提高 1.5 倍,以实现更快的移动。 添加动画持续时间详情的日志记录。
This commit is contained in:
parent
08096350cb
commit
dc4c88acb5
@ -120,7 +120,7 @@ export function useEntityAnimation() {
|
|||||||
viewer.clock.startTime = startTime.clone()
|
viewer.clock.startTime = startTime.clone()
|
||||||
viewer.clock.stopTime = stopTime.clone()
|
viewer.clock.stopTime = stopTime.clone()
|
||||||
viewer.clock.currentTime = startTime.clone()
|
viewer.clock.currentTime = startTime.clone()
|
||||||
viewer.clock.clockRange = Cesium.ClockRange.LOOP_STOP // 动画结束后停止
|
viewer.clock.clockRange = Cesium.ClockRange.CLAMPED // 动画到达终点后停止,不循环
|
||||||
viewer.clock.multiplier = 1 // 实时速度
|
viewer.clock.multiplier = 1 // 实时速度
|
||||||
viewer.clock.shouldAnimate = true
|
viewer.clock.shouldAnimate = true
|
||||||
|
|
||||||
@ -385,7 +385,7 @@ export function useEntityAnimation() {
|
|||||||
viewer.clock.startTime = startTime.clone()
|
viewer.clock.startTime = startTime.clone()
|
||||||
viewer.clock.stopTime = stopTime.clone()
|
viewer.clock.stopTime = stopTime.clone()
|
||||||
viewer.clock.currentTime = startTime.clone()
|
viewer.clock.currentTime = startTime.clone()
|
||||||
viewer.clock.clockRange = Cesium.ClockRange.LOOP_STOP
|
viewer.clock.clockRange = Cesium.ClockRange.CLAMPED // 动画到达终点后停止,不循环
|
||||||
viewer.clock.multiplier = 1
|
viewer.clock.multiplier = 1
|
||||||
viewer.clock.shouldAnimate = true
|
viewer.clock.shouldAnimate = true
|
||||||
|
|
||||||
@ -470,7 +470,12 @@ export function useEntityAnimation() {
|
|||||||
})
|
})
|
||||||
|
|
||||||
// 计算动画时长(使用速度倍数)
|
// 计算动画时长(使用速度倍数)
|
||||||
const speedMultiplier = options.speedMultiplier || 10
|
// 装备移动速度更快(speedMultiplier 更大 = 动画时间更短 = 移动更快)
|
||||||
|
const baseSpeedMultiplier = options.speedMultiplier || 10
|
||||||
|
const speedMultiplier = route.type === 'equipment'
|
||||||
|
? baseSpeedMultiplier * 1.5 // 装备速度是人员的1.5倍
|
||||||
|
: baseSpeedMultiplier // 人员保持原速
|
||||||
|
|
||||||
const animationDuration = Math.min(
|
const animationDuration = Math.min(
|
||||||
Math.max(route.duration / speedMultiplier, 30), // 最小30秒
|
Math.max(route.duration / speedMultiplier, 30), // 最小30秒
|
||||||
120 // 最大120秒
|
120 // 最大120秒
|
||||||
@ -510,6 +515,14 @@ export function useEntityAnimation() {
|
|||||||
const icon = route.type === 'equipment' ? deviceIcon : soldierIcon
|
const icon = route.type === 'equipment' ? deviceIcon : soldierIcon
|
||||||
const trailColor = route.type === 'equipment' ? Cesium.Color.ORANGE : Cesium.Color.CYAN
|
const trailColor = route.type === 'equipment' ? Cesium.Color.ORANGE : Cesium.Color.CYAN
|
||||||
|
|
||||||
|
// 日志输出:显示每个实体的动画时长
|
||||||
|
console.log(
|
||||||
|
`[useEntityAnimation] ${route.name} (${route.type}): ` +
|
||||||
|
`原始时长=${Math.round(route.duration)}秒, ` +
|
||||||
|
`速度倍数=${speedMultiplier.toFixed(1)}, ` +
|
||||||
|
`动画时长=${Math.round(animationDuration)}秒`
|
||||||
|
)
|
||||||
|
|
||||||
// 创建动画实体
|
// 创建动画实体
|
||||||
return viewer.entities.add({
|
return viewer.entities.add({
|
||||||
availability: new Cesium.TimeIntervalCollection([
|
availability: new Cesium.TimeIntervalCollection([
|
||||||
@ -584,7 +597,7 @@ export function useEntityAnimation() {
|
|||||||
viewer.clock.startTime = startTime.clone()
|
viewer.clock.startTime = startTime.clone()
|
||||||
viewer.clock.stopTime = stopTime.clone()
|
viewer.clock.stopTime = stopTime.clone()
|
||||||
viewer.clock.currentTime = startTime.clone()
|
viewer.clock.currentTime = startTime.clone()
|
||||||
viewer.clock.clockRange = Cesium.ClockRange.LOOP_STOP
|
viewer.clock.clockRange = Cesium.ClockRange.CLAMPED // 动画到达终点后停止,不循环
|
||||||
viewer.clock.multiplier = 1
|
viewer.clock.multiplier = 1
|
||||||
viewer.clock.shouldAnimate = true
|
viewer.clock.shouldAnimate = true
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user