This commit is contained in:
2025-05-13 03:19:28 +03:00
parent e2847b060d
commit 762dcf4524
784 changed files with 542617 additions and 2 deletions
@@ -0,0 +1,51 @@
using UnityEngine;
using System.Collections;
public class EngineRod : MonoBehaviour
{
public Transform anchor;
public Transform piston;
public float rodLength;
public Vector3 upVector;
private Vector3 startPosition;
private Quaternion rotation;
private Quaternion pistonRotation;
// Use this for initialization
void Start ()
{
upVector = piston.position - anchor.position;
rodLength = (transform.localPosition - transform.parent.InverseTransformPoint(piston.position)).magnitude;
upVector.Normalize();
startPosition = transform.localPosition;
upVector = transform.parent.InverseTransformVector(upVector);
rotation = transform.localRotation;
pistonRotation = piston.localRotation;
}
public float projectionDistance;
// Update is called once per frame
void Update () {
if (anchor != null)
{
transform.position = anchor.position;
Ray r = new Ray(startPosition, upVector);
var localPosProjected = r.Project(transform.localPosition);
projectionDistance = (localPosProjected - transform.localPosition).magnitude;
float pistonOffset = Mathf.Sqrt(rodLength*rodLength - projectionDistance*projectionDistance);
float angle = (90.0f - Mathf.Asin(pistonOffset/rodLength) * Mathf.Rad2Deg) *- Mathf.Sign(Vector3.Dot(transform.localPosition - localPosProjected, Vector3.forward));
transform.localRotation = Quaternion.AngleAxis(angle, Vector3.right) * rotation;
piston.localRotation = pistonRotation * Quaternion.AngleAxis(-angle, Vector3.right);
}
}
}
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: dd6ab127f9809c7448d4d9b971a91c0b
timeCreated: 1454273101
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
using UnityEngine;
using System.Collections;
public class RotationAnimation : MonoBehaviour
{
public Vector3 axis = Vector3.right;
public float angle;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update ()
{
transform.localRotation = Quaternion.AngleAxis(angle*Time.deltaTime, axis.normalized)* transform.localRotation;
}
}
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: cefd9fdcf43268c488994d0c89f25194
timeCreated: 1454272681
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: