UE4 ProjectileMovement Component 延遲啟動
遇到的問題是,對於投擲的物品,剛開始拿在手上(不發射出去),發射出去時根據調整的角度發射。
但是ProjectileMovement Component 中發射引數 Initial Speed 和velocity引數只能初始化的時候設定,再後期動態改時沒有作用的。
看了ProjectileMovement Component 中的原始碼發現
void UProjectileMovementComponent::InitializeComponent()
{
Super::InitializeComponent();
if (Velocity.SizeSquared() > 0.f)
{
// InitialSpeed > 0 overrides initial velocity magnitude.
if (InitialSpeed > 0.f)
{
Velocity = Velocity.GetSafeNormal() * InitialSpeed;///初始化速度
}
if (bInitialVelocityInLocalSpace)
{
SetVelocityInLocalSpace(Velocity);
}
………………
}
void UProjectileMovementComponent::TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction *ThisTickFunction)
{
while (bSimulationEnabled && RemainingTime >= MIN_TICK_TIME && (Iterations < MaxSimulationIterations) && !ActorOwner->IsPendingKill() && !HasStoppedSimulation())
{
LoopCount++;
Iterations++;
// subdivide long ticks to more closely follow parabolic trajectory
const float InitialTimeRemaining = RemainingTime;
const float TimeTick = ShouldUseSubStepping() ? GetSimulationTimeStep(RemainingTime, Iterations) : RemainingTime;
RemainingTime -= TimeTick;
……
// Initial move state
Hit.Time = 1.f;
const FVector OldVelocity = Velocity;//初始化時的Velocity值
const FVector MoveDelta = ComputeMoveDelta(OldVelocity, TimeTick);//每幀移動的Delta
………………
}
………………
}
發現控制每幀移動的話 需要幾個判斷條件,其中bSimulationEnabled需要為True。看原始碼可以知道這個值在藍圖中可以設定的。
/**
* If true, does normal simulation ticking and update. If false, simulation is halted, but component will still tick (allowing interpolation to run).
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=ProjectileSimulation)
uint8 bSimulationEnabled:1;
而移動速度Velocity除了可以初始化的時候根據Speed和Velocity初始化,在藍圖中也可以動態設定的(是在UMovement component中的一個引數)
/** Current velocity of updated component. */
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Velocity)
FVector Velocity;
相關文章
- 啟動優化之動態庫延遲載入優化
- Android Home鍵之後啟動Activity延遲5sAndroid
- Windows10系統怎麼禁用啟動延遲【圖文教程】Windows
- RabbitMQ延遲訊息的延遲極限是多少?MQ
- 打造低延遲互動音訊: Oboe音訊
- 【Mysql】Slave 延遲很大並且不動了MySql
- 延遲釋出
- win10開啟左下圖示有延遲怎麼辦 win10桌面圖示開啟有延遲如何解決Win10
- Laravel 延遲佇列Laravel佇列
- WebGL之延遲著色Web
- Mybatis延遲查詢MyBatis
- 疫情延遲 題解
- redis 延遲佇列Redis佇列
- 實現簡單延遲佇列和分散式延遲佇列佇列分散式
- 基於rabbitmq延遲外掛實現分散式延遲任務MQ分散式
- [20210529]延遲開啟資料庫.txt資料庫
- 延遲阻塞佇列 DelayQueue佇列
- SQL之延遲約束SQL
- script的延遲執行
- zookeeper之watch事件延遲事件
- oracle的延遲約束Oracle
- hyperf redis延遲佇列Redis佇列
- 從庫延遲案例分析
- oracle延遲事務無法自動推入處理Oracle
- 美國伺服器延遲高怎麼辦,如何解決延遲問題伺服器
- RabbitMQ實戰《延遲佇列》MQ佇列
- mysql主從延遲複製MySql
- RabbitMQ實現延遲佇列MQ佇列
- RabbitMQ 實現延遲佇列MQ佇列
- Mybatis延遲載入、快取MyBatis快取
- PostgreSQL中的複製延遲SQL
- laravel 實戰延遲解鎖Laravel
- 實現延遲搜尋功能
- MySQL 5.7 延遲複製配置MySql
- Hibernate 延遲載入原理
- Bash: sleep - 延遲指定時間
- 延遲載入 Dex 檔案
- 延遲繫結與retdlresolve