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
- [20210529]延遲開啟資料庫.txt資料庫
- RabbitMQ延遲訊息的延遲極限是多少?MQ
- 打造低延遲互動音訊: Oboe音訊
- 延遲繫結
- 移動端點選300ms延遲
- redis 延遲佇列Redis佇列
- Mybatis延遲查詢MyBatis
- WebGL之延遲著色Web
- Laravel 延遲佇列Laravel佇列
- 疫情延遲 題解
- 實現簡單延遲佇列和分散式延遲佇列佇列分散式
- 基於rabbitmq延遲外掛實現分散式延遲任務MQ分散式
- win10開啟左下圖示有延遲怎麼辦 win10桌面圖示開啟有延遲如何解決Win10
- Angular Component 延遲載入 Lazy Load 的一個依賴注入的問題以及解決方案Angular依賴注入
- 延遲阻塞佇列 DelayQueue佇列
- 延遲繫結與retdlresolve
- 從庫延遲案例分析
- hyperf redis延遲佇列Redis佇列
- 利用動畫延遲(animation-delay)實現複雜動畫動畫
- 美國伺服器延遲高怎麼辦,如何解決延遲問題伺服器
- mysql主從延遲複製MySql
- 延遲靜態繫結——static
- 前向渲染和延遲渲染
- Flink 鏈路延遲測量
- 主從延遲調優思路
- PostgreSQL中的複製延遲SQL
- 3.6 延遲例項終止
- RabbitMQ實戰《延遲佇列》MQ佇列
- Mybatis延遲載入、快取MyBatis快取
- MySQL 延遲從庫介紹MySql
- [Redis]延遲訊息佇列Redis佇列
- osg使用整理(11):延遲渲染
- RabbitMQ 實現延遲佇列MQ佇列
- laravel 實戰延遲解鎖Laravel
- RabbitMQ實現延遲佇列MQ佇列
- 移動端點選事件延遲的誕生消亡史事件