Initialer Upload neues Unity-Projekt
This commit is contained in:
58
Assets/SteamVR/Extras/SteamVR_TestThrow.cs
Normal file
58
Assets/SteamVR/Extras/SteamVR_TestThrow.cs
Normal file
@ -0,0 +1,58 @@
|
||||
//======= Copyright (c) Valve Corporation, All rights reserved. ===============
|
||||
using UnityEngine;
|
||||
using System.Collections;
|
||||
|
||||
[RequireComponent(typeof(SteamVR_TrackedObject))]
|
||||
public class SteamVR_TestThrow : MonoBehaviour
|
||||
{
|
||||
public GameObject prefab;
|
||||
public Rigidbody attachPoint;
|
||||
|
||||
SteamVR_TrackedObject trackedObj;
|
||||
FixedJoint joint;
|
||||
|
||||
void Awake()
|
||||
{
|
||||
trackedObj = GetComponent<SteamVR_TrackedObject>();
|
||||
}
|
||||
|
||||
void FixedUpdate()
|
||||
{
|
||||
var device = SteamVR_Controller.Input((int)trackedObj.index);
|
||||
if (joint == null && device.GetTouchDown(SteamVR_Controller.ButtonMask.Trigger))
|
||||
{
|
||||
var go = GameObject.Instantiate(prefab);
|
||||
go.transform.position = attachPoint.transform.position;
|
||||
|
||||
joint = go.AddComponent<FixedJoint>();
|
||||
joint.connectedBody = attachPoint;
|
||||
}
|
||||
else if (joint != null && device.GetTouchUp(SteamVR_Controller.ButtonMask.Trigger))
|
||||
{
|
||||
var go = joint.gameObject;
|
||||
var rigidbody = go.GetComponent<Rigidbody>();
|
||||
Object.DestroyImmediate(joint);
|
||||
joint = null;
|
||||
Object.Destroy(go, 15.0f);
|
||||
|
||||
// We should probably apply the offset between trackedObj.transform.position
|
||||
// and device.transform.pos to insert into the physics sim at the correct
|
||||
// location, however, we would then want to predict ahead the visual representation
|
||||
// by the same amount we are predicting our render poses.
|
||||
|
||||
var origin = trackedObj.origin ? trackedObj.origin : trackedObj.transform.parent;
|
||||
if (origin != null)
|
||||
{
|
||||
rigidbody.velocity = origin.TransformVector(device.velocity);
|
||||
rigidbody.angularVelocity = origin.TransformVector(device.angularVelocity);
|
||||
}
|
||||
else
|
||||
{
|
||||
rigidbody.velocity = device.velocity;
|
||||
rigidbody.angularVelocity = device.angularVelocity;
|
||||
}
|
||||
|
||||
rigidbody.maxAngularVelocity = rigidbody.angularVelocity.magnitude;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user