Ok, so I have been stuck on this bug for a while now, and I was wondering if anyone had any insights.

```
RunService.RenderStepped:Connect(function()
petModel:SetCFrame(CFrame.Angles(0,tick() * 2 % (math.pi * 2),0) * CFrame.Angles(math.rad(-10),0,0))
end)
```

Rotating wise, this works perfectly. But sometimes, instaed of the model starting by facing forward, it might be facing the side or backwards. I believe this is because of tick(), but I don’t know how to fix it.

Thank you for the help!
Koodsu

1 Like

by facing forward im assuming you mean in the positive Z direction?

if so i would set the CF before the RenderStepped function.

```
local modelCF = model:GetPrimaryPartCFrame()
local newCF = CFrame.lookAt(modelCF.Position, modelCF.Position + Vector3.new(0,0,1))
model:SetPrimaryPartCFrame(newCF )
```

1 Like

Can i ask what you’re trying to do? because you are right in suspecting your issue is with using tick(). Theres a much cleaner way to turn using the dt value passed every time RenderStepped fires

```
local
RunService.RenderStepped:Connect(function(dt)
petModel:SetCFrame( petModel:GetCFrame() * CFrame.Angles(math.rad(-10) * dt,0,0))
```

1 Like

Sorry for the late response, I was getting ready for bed since its like 1:15 am, but youre second resonse was what I needed except in the original example there was a slight tilt down(image 1) vs none(image 2) in yours. I have barely any CFrame experience lol so I don’t know what to do or what is going on.

could you show me the updated code?

--------Edit--------

nvm i misread your post. gimme a sec i got u.

```
RunService.RenderStepped:Connect(function(dt)
petModel:SetCFrame(petModel:GetCFrame() * CFrame.Angles(0,-3 * math.rad(-10) * dt,0))
end)
```

change this line of code

```
local newCF = CFrame.lookAt(modelCF.Position, modelCF.Position + Vector3.new(0,-.5,1), Vector3.new(0,1,0))
```

Not sure if thisll work lol but lmk

I never put that code in, I just used your second response.

ok ok then how bout this…

add this line under the SetCFrame line

```
petModel:SetCFrame( CFrame.lookAt( perModel:GetCFrame.Position, perModel:GetCFrame.Position + Vector3.new(0,.5,0)))
```

HeartBeatStoppah:

`petModel:SetCFrame( CFrame.lookAt( perModel:GetCFrame.Position, perModel:GetCFrame.Position + Vector3.new(0,.5,0)))`

```
RunService.RenderStepped:Connect(function(dt)
petModel:SetCFrame(petModel:GetCFrame() * CFrame.Angles(0,-3 * math.rad(-10) * dt,0))
petModel:SetCFrame( CFrame.lookAt(petModel:GetCFrame().Position,petModel:GetCFrame().Position + Vector3.new(0,.5,0)))
end)
```

Nope, this just makes me see the pets footers

sorry change the Vector3 to this Vector3.new(0, -.5, 1)

you might want to play around with the .5 value. The greater it is that 0 the farther up it will look and the lower it is than 0 the lower it looks.

i thnk its backwards, i cant tell what direction it is lol

lol ok this should be last edit. Change that same vector3 to Vector3.new(0, -.5, -1)

Forgot to say this in earlierresponses, but since that last line was added, it stopped rotating

yeah i just thought about that happening. EASY FIX THOUGH

just a few lines that need to get added. heres the updated function

```
local currCF
local slightlyUpVector
RunService.RenderStepped:Connect(function(dt)
currCF = petModel:GetCFrame()
slightlyUpVector = (-currCF.LookVector + (currCF.UpVector * -.5)).Unit
petModel:SetCFrame(currCF * CFrame.Angles(0,-3 * math.rad(-10) * dt,0))
petModel:SetCFrame( CFrame.lookAt(currCF.Position, currCF.Position + slightlyUpVector, Vector3.new(0,1,0) ))
end)
```

----edit----
missed a negative infront of currCF.LookVector

HeartBeatStoppah:

```
petModel:SetCFrame(currCF * CFrame.Angles(0,-3 * math.rad(-10) * dt,0))
petModel:SetCFrame( CFrame.lookAt(currCF.Position, currCF.Position + slightlyUpVector, Vector3.new(0,1,0) ))
end)
```

that made it bug out and jiggle up and down frame by frame

ok give me a minute or two to make sure this next edit works. Ill be back with something that works.

yo im sorry but its almost 2am for me and im a HS kid with a summer school test bright and early tmrw so i need to go to bed, I really appriciat the help tho!

```
local currCF
local slightlyUpVector
runSrvc.Heartbeat:Connect(function(dt)
currCF = petModel:GetCFrame()
currCF = CFrame.lookAt(currCF.Position, currCF.Position + (currCF.LookVector * Vector3.new(1,0,1)), Vector3.new(0,1,0))
currCF = currCF * CFrame.Angles(0,-3 * math.rad(-10) * dt,0)
slightlyUpVector = (currCF.LookVector + (currCF.UpVector * -.5)).Unit
petModel:SetCFrame( CFrame.lookAt(currCF.Position, currCF.Position + slightlyUpVector, Vector3.new(0,1,0) ))
end)
```

again, the -0.5 value is the one you fiddle with to adjust how high or low the pet will be looking

HeartBeatStoppah:

```
local currCF
local slightlyUpVector
runSrvc.Heartbeat:Connect(function(dt)
currCF = petModel:GetCFrame()
currCF = CFrame.lookAt(currCF.Position, currCF.Position + (currCF.LookVector * Vector3.new(1,0,1)), Vector3.new(0,1,0))
currCF = currCF * CFrame.Angles(0,-3 * math.rad(-10) * dt,0)
slightlyUpVector = (currCF.LookVector + (currCF.UpVector * -.5)).Unit
petModel:SetCFrame( CFrame.lookAt(currCF.Position, currCF.Position + slightlyUpVector, Vector3.new(0,1,0) ))
end)
```

Sorry, I was not notified of your response and forgot about it, but I did not describe my issue correctly, here is a video to show what happens