資源簡介
unity3d 開發賽車的一個例子,可供新手參考。
代碼片段和文件信息
using?UnityEngine;
using?System.Collections;
public?class?AICarControl?:?MonoBehaviour?{
//操縱前輪,用于轉向
public?WheelCollider?FrontLeftWheel;
public?WheelCollider?FrontRightWheel;
//齒輪數組
public?float[]?GearRatio;
//當前檔位
public?int?????CurrentGear=0;
public?float?EngineTorgue=600.0f;
public?float?MaxEngineRPM=3000.0f;
public?float?MinEngineRPM=1000.0f;
private?float?EngineRPM=0.0f;
public?Gameobject?waypointContainer;
private?ArrayList?waypoints;
private?int?currentWaypoint=0;
private?float?inputSteer=0.0f;
private?float?inputTorque=0.0f;
//?Use?this?for?initialization
void?Start?()?{
//設置車的重心,使車更穩定
Vector3?centerOfMass=rigidbody.centerOfMass;
centerOfMass.y=-1.5f;
rigidbody.centerOfMass=centerOfMass;
GetWaypoints();
}
//?Update?is?called?once?per?frame
void?Update?()?{
?//限制車的最大速度,調整阻力可能不是最好的做法。但它很簡單,而且不會干擾物理系統的運行。
rigidbody.drag=rigidbody.velocity.magnitude/250;
NavigateTowardsWaypoint();
?//通過兩個輪子的平均rpm,計算引擎rpm,然后切換檔位
EngineRPM=(FrontLeftWheel.rpm+FrontRightWheel.rpm)/2*GearRatio[CurrentGear];
ShiftGears();
//設置換檔的聲音
audio.pitch=Mathf.Abs(EngineRPM/MaxEngineRPM)+1.0f;
if(audio.pitch>2.0)
{
audio.pitch=2.0f;
}
//最后設置輪子轉動力矩。引擎力矩除以當前檔位,乘以用戶輸入值。
//輪子力矩提供一個汽車前進的力。輪子的轉動又會提高檔位。
FrontLeftWheel.motorTorque=EngineTorgue/GearRatio[CurrentGear]*inputTorque;
FrontRightWheel.motorTorque=EngineTorgue/GearRatio[CurrentGear]*inputTorque;
//轉動角度是任意數乘以用戶輸入值
FrontLeftWheel.steerAngle=10*inputSteer;
FrontRightWheel.steerAngle=10*inputSteer;
}
void?ShiftGears()
{
int?AppropriateGear=CurrentGear;
if(EngineRPM>=MaxEngineRPM)
{
AppropriateGear=CurrentGear;
for(int?i=0;i {
if(FrontLeftWheel.rpm*GearRatio[i] {
AppropriateGear=i;
break;
}
}
CurrentGear=AppropriateGear;
}
if(EngineRPM<=MaxEngineRPM)
{
AppropriateGear=CurrentGear;
for(int?j=GearRatio.Length-1;j>=0;j--)
{
if(FrontLeftWheel.rpm*GearRatio[j]>MinEngineRPM)
{
AppropriateGear=j;
break;
}
}
CurrentGear=AppropriateGear;
}
}
void?GetWaypoints()
{
Transform[]?potentialWaypoints?=waypointContainer.GetComponentsInChildren();
waypoints=?new?ArrayList();
foreach(Transform?potentialWaypoint?in?potentialWaypoints)
{
if(potentialWaypoint!=waypointContainer.transform)
{
waypoints.Add(potentialWaypoint);
}
}
}
void?NavigateTowardsWaypoint()
{
Transform?waypos=(Transform)waypoints[currentWaypoint];
Vector3?RelativeWaypointPosition=transform.InverseTransformPoint(waypos.position.x
transform.position.y
waypos.position.z);
inputSteer=RelativeWaypointPosition.x/RelativeWaypointPosition.magnitude;
if(Mathf.Abs(inputSteer)<0.5)
{
inputTorque=RelativeWaypointPosition.z/RelativeWaypointPosition.magnitude-Mathf.Abs(inputSteer);
}
else
{
inputTorque=0.0f;
}
if(RelativeWaypointPosition.magnitude<20)
{
cu
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????3170??2013-02-15?17:46??myRaceCar\Assembly-CSharp-vs.csproj
?????文件???????3260??2013-02-15?17:46??myRaceCar\Assembly-CSharp.csproj
?????文件???????9564??2013-02-15?17:34??myRaceCar\Assembly-CSharp.pidb
?????文件???????3087??2013-02-15?17:46??myRaceCar\Assembly-Unitysc
?????文件???????9307??2013-02-15?17:34??myRaceCar\Assembly-Unitysc
?????文件???????3087??2013-02-15?17:46??myRaceCar\Assembly-Unitysc
?????文件???????3042??2013-02-15?17:46??myRaceCar\Assembly-Unitysc
?????文件???????6597??2013-02-15?17:34??myRaceCar\Assembly-Unitysc
?????文件???????3132??2013-02-15?17:46??myRaceCar\Assembly-Unitysc
?????文件??????12612??2009-08-09?14:26??myRaceCar\Assets\.mayaSwatches\Road_Texture.psd.Composite.swatch
????I.A....?????22712??2013-02-15?20:18??myRaceCar\Assets\AIRaceCar.prefab
?????文件?????197120??2009-08-05?20:04??myRaceCar\Assets\ArtWork\Car\Car_Model.mb
????I.A....??????4220??2013-02-15?16:06??myRaceCar\Assets\ArtWork\Car\Materials\CarSolidTextures.mat
?????文件???????3801??2009-08-09?18:03??myRaceCar\Assets\ArtWork\Car\Materials\Car_Material.mat
????I.A....??????4216??2013-02-15?14:36??myRaceCar\Assets\ArtWork\Car\Materials\Car_Texture.mat
?????文件????????494??2009-06-05?12:46??myRaceCar\Assets\ArtWork\Car\Shaders\ConstantColorUnderla
?????文件????2027997??2009-06-02?20:53??myRaceCar\Assets\ArtWork\Car\Textures\Car_Texture.psd
?????文件???????3748??2009-08-09?14:17??myRaceCar\Assets\ArtWork\Track\Materials\Road_Material.mat
????I.A....??????4216??2013-02-15?14:36??myRaceCar\Assets\ArtWork\Track\Materials\Road_Texture.mat
?????文件???21793873??2009-08-02?02:24??myRaceCar\Assets\ArtWork\Track\Textures\Road_Texture.psd
?????文件?????126640??2009-08-09?19:50??myRaceCar\Assets\ArtWork\Track\Track.mb
????I.A....?????65896??2013-02-15?20:18??myRaceCar\Assets\Scene.unity
?????文件???????6232??2013-02-15?17:33??myRaceCar\Assets\sc
?????文件???????3926??2013-02-15?16:48??myRaceCar\Assets\sc
?????文件???????2602??2013-02-15?14:32??myRaceCar\Assets\sc
?????文件????????360??2013-02-15?15:57??myRaceCar\Assets\sc
?????文件?????245804??2013-02-15?16:46??myRaceCar\Assets\Sound\CarEngine_Sound.wav
????I.A....??????1046??2012-11-06?11:28??myRaceCar\Assets\Standard?Assets\sc
????I.A....??????1893??2012-11-06?11:28??myRaceCar\Assets\Standard?Assets\sc
????I.A....???????591??2012-11-06?11:28??myRaceCar\Assets\Standard?Assets\sc
............此處省略519個文件信息
- 上一篇:網上商城畢業設計SSH
- 下一篇:CTP多賬戶多策略-交易程序
評論
共有 條評論