반응형
- 코드 작성
using UnityEngine;
using UnityEngine.Playables;
using UnityEngine.Timeline;
public class TimelineExample : MonoBehaviour
{
public GameObject cube;
private void Start()
{
TimelineAsset timelineAsset = ScriptableObject.CreateInstance<TimelineAsset>();
TrackAsset trackAsset = timelineAsset.CreateTrack<PlayableTrack>(null, "CubeTrack");
ScriptPlayable<CubeMoverBehaviour> cubeMoverPlayable =
ScriptPlayable<CubeMoverBehaviour>.Create(trackAsset);
CubeMoverBehaviour cubeMoverBehaviour = cubeMoverPlayable.GetBehaviour();
cubeMoverBehaviour.cube = cube;
timelineAsset.duration = 5f;
TimelinePlayable timelinePlayable = TimelinePlayable.Create(PlayOnAwake: false);
timelinePlayable.SetGraph(CreatePlayableGraph(timelineAsset));
PlayableDirector playableDirector = gameObject.AddComponent<PlayableDirector>();
playableDirector.playableAsset = timelinePlayable;
}
private PlayableGraph CreatePlayableGraph(TimelineAsset timelineAsset)
{
PlayableGraph playableGraph = PlayableGraph.Create();
ScriptPlayable<TimelinePlayableBehaviour> timelinePlayable =
ScriptPlayable<TimelinePlayableBehaviour>.Create(playableGraph);
timelinePlayable.GetBehaviour().SetDuration(timelineAsset.duration);
playableGraph.Play();
return playableGraph;
}
}
public class CubeMoverBehaviour : PlayableBehaviour
{
public GameObject cube;
public Vector3 startPosition;
public Vector3 endPosition;
public override void OnBehaviourPlay(Playable playable, FrameData info)
{
startPosition = cube.transform.position;
endPosition = cube.transform.position + Vector3.right * 5f;
}
public override void ProcessFrame(Playable playable, FrameData info, object playerData)
{
float time = (float)playable.GetTime();
cube.transform.position = Vector3.Lerp(startPosition, endPosition, time / (float)playable.GetDuration());
}
}
반응형
'개발 > C#' 카테고리의 다른 글
유니티 C# 화면 캡처하기 간단 구현 Screen Capture (0) | 2023.04.01 |
---|---|
유니티 C# 일정시간 후 삭제시키기 간단 구현 Destroy (0) | 2023.04.01 |
유니티 C# 지렁이 키우기 게임 만들기 간단 구현 (0) | 2023.04.01 |
유니티 C# 똥피하기 게임 만들기 간단 구현 (0) | 2023.04.01 |
유니티 C# 물체 회전시키기 Quaternion 종류 및 간단 사용법 (0) | 2023.03.31 |
유니티 C# 지형 자동 생성 Terrain 간단 구현 (0) | 2023.03.31 |
유니티 C# 2d 애니메이션 animation 간단 사용법 (0) | 2023.03.31 |
유니티 C# 레이저 오브젝트 맞추기 Raycast 간단 사용법 (0) | 2023.03.31 |
댓글