- 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:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user