- Added a fence for the chickens.

- Fixed chickens not resting when held.
- Switched from EasyQuestSwitch to EasyPlatformSwitch to handle iOS better.
This commit is contained in:
2026-01-29 19:14:46 -05:00
parent 72c104232b
commit ecbfb02197
49 changed files with 3420 additions and 170 deletions
+62 -59
View File
@@ -44,79 +44,82 @@ public class Chimken : UdonSharpBehaviour
void FixedUpdate()
{
if (FollowMode && _PlayerToFollow != null)
if (!_IsBeingHeld)
{
Vector3 PlayerPosition = _PlayerToFollow.GetPosition();
Vector3 PlayerPositionLateral = new Vector3(PlayerPosition.x, 0.0f, PlayerPosition.z);
Vector3 ChickenPosition = transform.position;
Vector3 ChickenPositionLateral = new Vector3(ChickenPosition.x, 0.0f, ChickenPosition.z);
if (FollowMode && _PlayerToFollow != null)
{
Vector3 PlayerPosition = _PlayerToFollow.GetPosition();
Vector3 PlayerPositionLateral = new Vector3(PlayerPosition.x, 0.0f, PlayerPosition.z);
Vector3 ChickenPosition = transform.position;
Vector3 ChickenPositionLateral = new Vector3(ChickenPosition.x, 0.0f, ChickenPosition.z);
float DistanceToPlayer = Vector3.Distance(ChickenPositionLateral, PlayerPositionLateral);
if (DistanceToPlayer <= 0.7f)
{
SetAnimationState(ChickenState.Eat);
}
else if (DistanceToPlayer <= 2.75f)
{
transform.LookAt(PlayerPosition);
SetAnimationState(ChickenState.Walk);
float DistanceToPlayer = Vector3.Distance(ChickenPositionLateral, PlayerPositionLateral);
if (DistanceToPlayer <= 0.7f)
{
SetAnimationState(ChickenState.Eat);
}
else if (DistanceToPlayer <= 2.75f)
{
transform.LookAt(PlayerPosition);
SetAnimationState(ChickenState.Walk);
}
else
{
transform.LookAt(PlayerPosition);
SetAnimationState(ChickenState.Run);
}
}
else
{
transform.LookAt(PlayerPosition);
SetAnimationState(ChickenState.Run);
}
}
else
{
_MovementTimer -= Time.deltaTime;
if (_MovementTimer <= 0.0f)
{
ChickenState NewState = (ChickenState)Random.Range(0, 4);
SetAnimationState(NewState);
_MovementDirectionDegrees = Random.Range(0.0f, 359.999999999f);
switch (NewState)
_MovementTimer -= Time.deltaTime;
if (_MovementTimer <= 0.0f)
{
ChickenState NewState = (ChickenState)Random.Range(0, 4);
SetAnimationState(NewState);
_MovementDirectionDegrees = Random.Range(0.0f, 359.999999999f);
switch (NewState)
{
case ChickenState.Idle:
_MovementTimer = 4.0f;
break;
case ChickenState.Walk:
_MovementTimer = 4.5f;
break;
case ChickenState.Run:
_MovementTimer = 1.2f;
break;
case ChickenState.Eat:
_MovementTimer = 6.0f;
break;
}
}
transform.rotation = Quaternion.Euler(
transform.eulerAngles.x,
Mathf.LerpAngle(transform.rotation.eulerAngles.y, _MovementDirectionDegrees, 0.2f),
transform.eulerAngles.x);
}
if (_Moving)
{
switch (_AnimationState)
{
case ChickenState.Idle:
_MovementTimer = 4.0f;
break;
case ChickenState.Walk:
_MovementTimer = 4.5f;
transform.position += (transform.forward * Time.fixedDeltaTime * WALK_SPEED);
break;
case ChickenState.Run:
_MovementTimer = 1.2f;
break;
case ChickenState.Eat:
_MovementTimer = 6.0f;
transform.position += (transform.forward * Time.fixedDeltaTime * RUN_SPEED);
break;
}
}
transform.rotation = Quaternion.Euler(
transform.eulerAngles.x,
Mathf.LerpAngle(transform.rotation.eulerAngles.y, _MovementDirectionDegrees, 0.2f),
transform.eulerAngles.x);
// Reset roll and pitch to zero on every physics update so the chicken stays upright
Vector3 Rotation = transform.eulerAngles;
Rotation.x = 0.0f;
Rotation.z = 0.0f;
transform.rotation = Quaternion.Euler(Rotation);
}
if (_Moving)
{
switch (_AnimationState)
{
case ChickenState.Walk:
transform.position += (transform.forward * Time.fixedDeltaTime * WALK_SPEED);
break;
case ChickenState.Run:
transform.position += (transform.forward * Time.fixedDeltaTime * RUN_SPEED);
break;
}
}
// Reset roll and pitch to zero on every physics update so the chicken stays upright
Vector3 Rotation = transform.eulerAngles;
Rotation.x = 0.0f;
Rotation.z = 0.0f;
transform.rotation = Quaternion.Euler(Rotation);
}
public override void OnPlayerJoined(VRCPlayerApi Player)