汽車課程腳本
A. Unity通過鍵盤控制汽車移動的腳本
privateGameObject_Car;
privatefloat_Speed=100;
voidStart(){
_Car=Instantiate(Resources.Load("實例化物體名"))asGameObject;
}
voidUpdate(){
if(Input.GetKeyDown(KeyCode.W))
{
_Car.transform.Translate(Vector3.forward*_Speed*Time.deltaTime);
}
if(Input.GetKeyDown(KeyCode.S))
{
_Car.transform.Translate(-Vector3.forward*_Speed*Time.deltaTime);
}
if(Input.GetKeyDown(KeyCode.A))
{
_Car.transform.Translate(Vector3.left*_Speed*Time.deltaTime);
}
if(Input.GetKeyDown(KeyCode.D))
{
_Car.transform.Translate(Vector3.right*_Speed*Time.deltaTime);
}
}
B. vehiclespy如何發指令
您好,VehicleSpy是一款用於汽車故障診斷的專業軟體,它可以幫助您實現汽車的遠程式控制制,發送指令等功能。使用VehicleSpy發送指令的步驟如下:
1、首先,您需要連接您的汽車,並確保您的計算機和汽車之間的連接是可靠的。
2、然後,您需要打開VehicleSpy軟體,在軟體中選擇您想要發送指令的汽車,並點擊「連接」按鈕。
3、接下來,您需要在VehicleSpy軟體中找到您想要發送的指令,並點擊「發送」按鈕,即可發送指令。
4、最後,您可以在VehicleSpy軟體中查看您發送的指令是否已經成功發送,以及汽車是否已經接收到您發送的指令。
通過以上步驟,您就可以使用VehicleSpy發送指令了。
C. 網上觀看視頻學習,需要5分鍾點擊滑鼠,否則記為0學時,誰會用按鍵精靈設置這樣的程序
使用步驟如下:
1. 製作腳本:按照個人需求從網上搜集腳本或者自己製作腳本。如果您的腳本是從別的地方收集的,請先把腳本文件拷貝到按鍵精靈文件夾下的script文件夾中,然後再運行按鍵精靈。
2.選擇有效的窗口:建議您選擇「對所有窗口有效」。如果您只需要腳本當某個窗口在前台時有效,請選擇窗口名稱,比如「龍族」
3.讓需要執行的腳本「有效」,只有「有效」一欄中勾中的腳本才會執行。
4.進入游戲(或者其他需要使用按鍵精靈的軟體) ,在需要使用腳本的時候按下腳本的「快捷鍵」,按鍵精靈就會忠實的為您工作了。
按鍵精靈主界面
圖:主界面及功能按鈕
主界面功能簡介:
增加:增加一個新的腳本。
修改:修改當前選中的腳本。
刪除:刪除當前選中的腳本,可以同時選中多個腳本進行刪除。
錄制:錄制新的腳本,新手製作腳本首選功能。
上傳:將當前腳本上傳至按鍵精靈網站,與他人進行交流。
全部有效/無效:讓所有腳本有效或者無效。
注冊:注冊按鍵精靈,使用正版軟體。
幫助:查看用戶幫助手冊。
圖:錄制功能
錄制功能簡介:
強烈推薦的功能!能夠忠實記錄您的動作,並在腳本執行時回放,新手也可隨心所欲製作腳本。按下ScrollLock鍵就可以開始錄制,再次按下就可停止錄制,最後保存即可。如果您需要按鍵精靈忠實的記錄滑鼠移動軌跡,在後面的「記錄滑鼠移動軌跡」前面打個勾就可以了。錄制過程中可以隨便移動錄制工具條,不會對您錄制的動作產生任何影響。
圖:上傳腳本
上傳腳本功能簡介:
在主界面選擇一個腳本,點擊「上傳」按鈕就可以進入上傳腳本界面。
您可以將自己比較得意的腳本上傳到我們的伺服器。在您的腳本上傳成功之後,我們將會進行人工審核。不錯的腳本都會被我們推薦給其他玩家共同學習。
上傳時按鍵精靈會自動填寫一些信息。請您在「腳本說明」里寫上腳本的用途、製作思路等你認為對其他人有幫助的信息。沒有說明或者說明不清楚的腳本將無法獲得推薦。:-)
腳本編輯器
圖:腳本編輯器界面
腳本編輯器使用說明:
在動作選擇區選擇動作,插入右邊的腳本內容區即可。腳本支持粘貼、復制、移動、刪除等操作。
腳本編寫完畢之後,在腳本設置區進行一些必要的設置,點擊「保存腳本」 ,就可保存當前製作的腳本,點擊右上角的X符號可以關閉編輯器返回主界面。
注意:我們默認的終止熱鍵是「F12」 ,目前所有的腳本使用同一個終止熱鍵,也就是按下一個終止熱鍵之後,所有的腳本就會停止運行。
圖:腳本調試功能
腳本調試功能簡介:
腳本調試功能允許您隨時觀察腳本的執行順序,也可以隨意暫停/繼續腳本的運行,方便查找腳本錯誤。當您點擊「執行」後,腳本將會開始執行,同時記錄下每一步執行了哪條動作(語句),您可以隨時按「暫停」熱鍵暫時中止腳本執行,然後點擊「語句編號」立刻查看,看完以後可以隨時讓腳本從中斷處恢復執行。
執行熱鍵: ScrollLock
暫停熱鍵:Pause
停止熱鍵:ScrollLock
圖: 抓點界面
抓點功能簡介:
用戶可以抓取20個坐標點以及相應坐標點的顏色。抓點熱鍵包括數字鍵0到9,以及數字鍵下方的10個字母鍵Q到P。按下熱鍵即可獲得滑鼠當前所在位置的坐標和顏色,以備製作腳本時使用。
偏移抓點:當使用偏移抓點時,實際抓到的是滑鼠附近的一點的坐標和顏色(具體抓到的點用一個「瞄準鏡」表示)。這樣可以解決在某些情況下,滑鼠圖標顏色會擋住真實坐標顏色的問題。
按鍵精靈動作介紹
按鍵精靈的所有動作都需要在「動作選擇區」中選定,然後插入「腳本內容區」。按鍵精靈的所有功能也都集中在動作選擇區中。
按鍵精靈提供了豐富的動作供大家選擇,這些動作分為四個大類。分別介紹如下
鍵盤動作:
按鍵動作:模擬鍵盤按下、彈起以及按鍵的動作。可以區分按下狀態和彈起狀態,也就是可以模擬按住一個鍵不放的動作
按鍵組合:模擬按下組合鍵的情況
滑鼠動作:
滑鼠點擊動作:共有7種點擊類型供你選擇,單擊或者雙擊,左鍵或者右鍵,等等。
抓點動作:點擊「抓點」出現抓點界面,內置20個抓點熱鍵可以抓取20個坐標點,足以滿足大部分人的需要
滑鼠移動動作:將滑鼠移動到屏幕上某個預定的坐標點
滑鼠相對移動:將滑鼠相對當前位置進行移動
保存/恢復滑鼠位置:保存當前滑鼠位置、恢復滑鼠位置到最後一次保存的位置
控制動作:
顏色控制動作:如果某一點的顏色符合條件,就執行後面的語句,顏色可以在「抓點」窗口中抓取
循環動作:將腳本反復執行
跳轉動作: 在腳本的某個位置先設置一個「標記」,然後就可以在這里選擇直接跳轉到「標記」處
子程序調用:製作腳本子程序,可以隨時調用
停止腳本運行:停止腳本運行功能
其它動作:
延時:可以讓腳本停頓一段時間再繼續執行
輸入文本:輸入一串文本,支持中文輸入
注釋/標記:你可以給自己的語句加以注釋,同時這些注釋也可以用來作為「跳轉語句」中的「標記」
彈出窗口:彈出窗口顯示窗口提示內容,可以暫停腳本的運行
按鍵精靈腳本編程語句
1.轉移語句:Goto
格式:Goto [標記]
解釋:跳轉到標記的位置
2.注釋或標記語句:Rem
格式:Rem [注釋或標記]
解釋:可以當作標記供跳轉語句使用,也可以當作腳本的注釋使用
3.條件語句:IfColor ... EndIf
條件正 格式:
IfColor x y color 0(x、y為桌面橫坐標和縱坐標,color為顏色RGB碼)
[語句塊]
EndIf
解釋:如果坐標點(x,y)的顏色等於color的數值,則執行語句塊中的內容
條件反 格式:
IfColor x y color 1
[語句塊]
EndIf
解釋:如果坐標點(x,y)的顏色不等於color的數值,則執行語句塊中的內容
4.循環語句:For ... EndFor
格式:
For [循環次數]
[語句塊]
EndFor
解釋:將語句塊反復執行數次,執行次數由「循環次數」控制
5.延時語句:Delay
格式:Delay [毫秒]
解釋:等待一些時間再執行下一句腳本。
6.游標移動語句:MoveTo、MoveR
格式:
絕對移動:MoveTo x y
解釋:移動滑鼠到(x,y)點
相對移動:MoveR dx dy(dx、dy為正時表示正方向移動,為負即為負方向移動)
解釋:相對當前坐標橫向移動滑鼠x,縱向移動滑鼠y
7.滑鼠控制語句:LeftClick、RightClick、LeftDoubleClick、LeftDown、LeftUp、RightDown、RightUp
格式:
左鍵單擊:LeftClick 1
右鍵單擊:RightClick 1
左鍵雙擊:LeftDoubleClick 1
左鍵按下:LeftDown 1
左鍵彈起:LeftUp 1
右鍵按下:RightDown 1
右鍵彈起:RightUp 1
8.鍵盤按鍵語句:KeyPress、KeyDown、KeyUp
格式:
按鍵:KeyPress code 1(code為鍵盤 ASCII碼)
按住:KeyDown code 1
彈起:KeyUp code 1
9.輸入字元串語句:SayString
格式:SayString [要輸入的字元串]
10.保存/恢復滑鼠位置
格式:
保存滑鼠位置:SaveMousePos
解釋:保存當前滑鼠位置
恢復滑鼠位置:RestoreMousePos
解釋:將滑鼠移動到上一次保存的滑鼠位置
這兩個語句常用於製作網路游戲練功腳本,腳本開始時保存滑鼠位置,腳本結束時恢復滑鼠位置。
11.子程序、子程序調用
格式:
Sub [子程序名]
[語句塊]
Retrun
解釋:將一些語句放在子程序中,可以被反復調用
Gosub [子程序名]
解釋:調用子程序中的語句塊
11.腳本停止運行
格式:EndScript
解釋:完全停止當前腳本的運行。可以用於調試腳本。
12.彈出窗口
格式:MessageBox [窗口顯示內容]
解釋:彈出一個窗口,顯示設置的內容,用戶點擊「確定」 方可繼續運行腳本,可以用於暫停腳本的運行
D. 資料庫課程設計 汽車銷售信息管理系統
本汽車銷售信息管理系統是為滿足在校學生課程設計的需要,開發的一個基於JAVA技術的銷售信息管理系統,功能包括:客戶信息管理模塊、銷售信息管理模塊、售後服務信息管理模塊、市場策略公告模塊、統計報表管理模塊,模塊包括信息的添加、刪除、修改等功能。
本課程設計報告,對整個系統及其內部的各個功能模塊的構想、設計思路、實現方法和過程,做出了詳細的說明和介紹。
E. 求一段unity3D汽車自動駕駛的腳本代碼
1、把腳本直接連到汽車車身網格上,車身要有Rigidbody Component,要有四個輪子網格做子物體。 要想有聲音的話還要有AudioSource Component。
2、打開Inspector,選擇汽車腳本,把四個輪子連接到相對應的Transform參數上。設置wheelRadius參數為你輪子網格的大小。WheelCollider是自動生成的,所以無需手動添加。這樣就能保證運行了,其他的聲音和灰塵可以再添加。
腳本源代碼如下:*/
#pragma strict
//maximal corner and braking acceleration capabilities
var maxCornerAccel=10.0;
var maxBrakeAccel=10.0;
//center of gravity height - effects tilting in corners
var cogY = 0.0;
//engine powerband
var minRPM = 700;
var maxRPM = 6000;
//maximum Engine Torque
var maxTorque = 400;
//automatic transmission shift points
var shiftDownRPM = 2500;
var shiftUpRPM = 5500;
//gear ratios
var gearRatios = [-2.66, 2.66, 1.78, 1.30, 1.00];
var finalDriveRatio = 3.4;
//a basic handling modifier:
//1.0 understeer
//0.0 oversteer
var handlingTendency = 0.7;
//graphical wheel objects
var wheelFR : Transform;
var wheelFL : Transform;
var wheelBR : Transform;
var wheelBL : Transform;
//suspension setup
var suspensionDistance = 0.3;
var springs = 1000;
var dampers = 200;
var wheelRadius = 0.45;
//particle effect for ground st
var groundDustEffect : Transform;
private var queryUserInput = true;
private var engineRPM : float;
private var steerVelo = 0.0;
private var brake = 0.0;
private var handbrake = 0.0;
private var steer = 0.0;
private var motor = 0.0;
//private var skidTime = 0.0;
private var onGround = false;
private var cornerSlip = 0.0;
private var driveSlip = 0.0;
private var wheelRPM : float;
private var gear = 1;
//private var skidmarks : Skidmarks;
private var wheels : WheelData[];
private var wheelY = 0.0;
private var rev = 0.0;
//Functions to be used by external scripts
//controlling the car if required
//===================================================================
//return a status string for the vehicle
function GetStatus(gui : GUIText) {
gui.text="v="+(rigidbody.velocity.magnitude * 3.6).ToString("f1") km/h\ngear= "+gear+"\nrpm= "+engineRPM.ToString("f0");
}
//return an information string for the vehicle
function GetControlString(gui : GUIText) {
gui.text="Use arrow keys to control the jeep,\nspace for handbrake."; }
//Enable or disable user controls
function SetEnableUserInput(enableInput)
{
queryUserInput=enableInput;
}
//Car physics
//===================================================================
//some whee calculation data
class WheelData{ + "
var rotation = 0.0;
var coll : WheelCollider;
var graphic : Transform;
var maxSteerAngle = 0.0;
var lastSkidMark = -1;
var powered = false;
var handbraked = false;
var originalRotation : Quaternion;
};
function Start () {
//setup wheels
wheels=new WheelData[4];
for(i=0;i<4;i++)
wheels[i] = new WheelData();
wheels[0].graphic = wheelFL;
wheels[1].graphic = wheelFR;
wheels[2].graphic = wheelBL;
wheels[3].graphic = wheelBR;
wheels[0].maxSteerAngle=30.0;
wheels[1].maxSteerAngle=30.0;
wheels[2].powered=true;
wheels[3].powered=true;
wheels[2].handbraked=true;
wheels[3].handbraked=true;
for(w in wheels)
{
if(w.graphic==null)
Debug.Log("You need to assign all four wheels for the car script!"); if(!w.graphic.transform.IsChildOf(transform))
Debug.Log("Wheels need to be children of the Object with the car script");
w.originalRotation = w.graphic.localRotation;
//create collider
colliderObject = new GameObject("WheelCollider");
colliderObject.transform.parent = transform;
colliderObject.transform.position = w.graphic.position;
w.coll = colliderObject.AddComponent(WheelCollider);
w.coll.suspensionDistance = suspensionDistance;
w.coll.suspensionSpring.spring = springs;
w.coll.suspensionSpring.damper = dampers;
//no grip, as we simulate handling ourselves
w.coll.forwardFriction.stiffness = 0;
w.coll.sidewaysFriction.stiffness = 0;
w.coll.radius = wheelRadius;
}
//get wheel height (height forces are applied on)
wheelY=wheels[0].graphic.localPosition.y;
//setup center of gravity
rigidbody.centerOfMass.y = cogY;
//find skidmark object
// skidmarks = FindObjectOfType(typeof(Skidmarks));
//shift to first
gear=1;
}
//update wheel status
function UpdateWheels()
{
//calculate handbrake slip for traction gfx
handbrakeSlip=handbrake*rigidbody.velocity.magnitude*0.1;
if(handbrakeSlip>1)
handbrakeSlip=1;
totalSlip=0.0;
onGround=false;
for(w in wheels)
{
//rotate wheel
w.rotation += wheelRPM / 60.0 * -rev * 360.0 * Time.fixedDeltaTime; w.rotation = Mathf.Repeat(w.rotation, 360.0);
w.graphic.localRotation= Quaternion.Euler( w.rotation, w.maxSteerAngle*steer, 0.0 ) * w.originalRotation;
//check if wheel is on ground
if(w.coll.isGrounded)
onGround=true;
slip = cornerSlip+(w.powered?driveSlip:0.0)+(w.handbraked?handbrakeSlip:0.0); totalSlip += slip;
var hit : WheelHit;
var c : WheelCollider;
c = w.coll;
if(c.GetGroundHit(hit))
{
//if the wheel touches the ground, adjust graphical wheel position to reflect springs
w.graphic.localPosition.y-=Vector3.Dot(w.graphic.position-hit.point,transform.up)-w.coll.radius;
//create st on ground if appropiate
if(slip>0.5 && hit.collider.tag=="Dusty")
{
groundDustEffect.position=hit.point;
groundDustEffect.particleEmitter.worldVelocity=rigidbody.velocity*0.5; groundDustEffect.particleEmitter.minEmission=(slip-0.5)*3; groundDustEffect.particleEmitter.maxEmission=(slip-0.5)*3;
groundDustEffect.particleEmitter.Emit(); }
//and skid marks
/*if(slip>0.75 && skidmarks != null)
w.lastSkidMark=skidmarks.AddSkidMark(hit.point,hit.normal,(slip-0.75)*2,w.lastSkidMark);
else
w.lastSkidMark=-1; */
}
// else w.lastSkidMark=-1;
}
totalSlip/=wheels.length;
}
//Automatically shift gears
function AutomaticTransmission()
{
if(gear>0)
{
if(engineRPM>shiftUpRPM&&gear<gearRatios.length-1)
gear++;
if(engineRPM<shiftDownRPM&&gear>1)
gear--;
}
}
//Calculate engine acceleration force for current RPM and trottle
function CalcEngine() : float
{
if(brake+handbrake>0.;motor=0.0;;//ifcarisairborne,justre;if(!onGround);engineRPM+=(motor-0.3)*2;engineRPM=Mathf.Clamp(en;return0.0;;else;AutomaticTransmission();;engineRPM=whee
if(brake+handbrake>0.1)
motor=0.0;
//if car is airborne, just rev engine
if(!onGround)
{
engineRPM += (motor-0.3)*25000.0*Time.deltaTime;
engineRPM = Mathf.Clamp(engineRPM,minRPM,maxRPM);
return 0.0;
}
else
{
AutomaticTransmission();
engineRPM=wheelRPM*gearRatios[gear]*finalDriveRatio;
if(engineRPM<minRPM)
engineRPM=minRPM;
if(engineRPM<maxRPM)
{
//fake a basic torque curve
x = (2*(engineRPM/maxRPM)-1);
torqueCurve = 0.5*(-x*x+2);
torqueToForceRatio = gearRatios[gear]*finalDriveRatio/wheelRadius; return
motor*maxTorque*torqueCurve*torqueToForceRatio;
}
else
//rpm delimiter
return 0.0;
}
}
//Car physics
//The physics of this car are really a trial-and-error based extension of
//basic "Asteriods" physics -- so you will get a pretty arcade-like feel. //This
may or may not be what you want, for a more physical approach research //the
wheel colliders
function HandlePhysics () {
var velo=rigidbody.velocity;
wheelRPM=velo.magnitude*60.0*0.5;
rigidbody.angularVelocity=new
Vector3(rigidbody.angularVelocity.x,0.0,rigidbody.angularVelocity.z);
dir=transform.TransformDirection(Vector3.forward);
flatDir=Vector3.Normalize(new Vector3(dir.x,0,dir.z));
flatVelo=new Vector3(velo.x,0,velo.z);
rev=Mathf.Sign(Vector3.Dot(flatVelo,flatDir));
//when moving backwards or standing and brake is pressed, switch to
reverse
if((rev<0||flatVelo.sqrMagnitude<0.5)&&brake>0.1)
gear=0;
if(gear==0)
{
//when in reverse, flip brake and gas
tmp=brake;
brake=motor;
motor=tmp;
//when moving forward or standing and gas is pressed, switch to drive
if((rev>0||flatVelo.sqrMagnitude<0.5)&&brake>0.1)
gear=1;
}
engineForce=flatDir*CalcEngine();
totalbrake=brake+handbrake*0.5;
if(totalbrake>1.0)totalbrake=1.0;
brakeForce=-flatVelo.normalized*totalbrake*rigidbody.mass*maxBrakeAccel;
flatDir*=flatVelo.magnitude;
flatDir=Quaternion.AngleAxis(steer*30.0,Vector3.up)*flatDir;
flatDir*=rev;
diff=(flatVelo-flatDir).magnitude;
cornerAccel=maxCornerAccel;
if(cornerAccel>diff)cornerAccel=diff;
cornerForce=-(flatVelo-flatDir).normalized*cornerAccel*rigidbody.mass;
cornerSlip=Mathf.Pow(cornerAccel/maxCornerAccel,3);
rigidbody.AddForceAtPosition(brakeForce+engineForce+cornerForce,transform.position+transform.up*wheelY);
handbrakeFactor=1+handbrake*4;
if(rev<0)
handbrakeFactor=1;
veloSteer=((15/(2*velo.magnitude+1))+1)*handbrakeFactor;
steerGrip=(1-handlingTendency*cornerSlip);
if(rev*steer*steerVelo<0)
steerGrip=1;
maxRotSteer=2*Time.fixedDeltaTime*handbrakeFactor*steerGrip;
fVelo=velo.magnitude;
veloFactor=fVelo<1.0?fVelo:Mathf.Pow(velo.magnitude,0.3);
steerVeloInput=rev*steer*veloFactor*0.5*Time.fixedDeltaTime*handbrakeFactor;
if(velo.magnitude<0.1)
steerVeloInput=0;
if(steerVeloInput>steerVelo)
{
steerVelo+=0.02*Time.fixedDeltaTime*veloSteer;
if(steerVeloInput<steerVelo)
steerVelo=steerVeloInput;
}
else
{
steerVelo-=0.02*Time.fixedDeltaTime*veloSteer;
if(steerVeloInput>steerVelo)
steerVelo=steerVeloInput;
}
steerVelo=Mathf.Clamp(steerVelo,-maxRotSteer,maxRotSteer);
transform.Rotate(Vector3.up*steerVelo*57.295788);
}
function FixedUpdate () {
//query input axes if necessarry
if(queryUserInput)
{
brake = Mathf.Clamp01(-Input.GetAxis("Vertical"));
handbrake = Input.GetButton("Jump")?1.0:0.0;
steer = Input.GetAxis("Horizontal");
motor = Mathf.Clamp01(Input.GetAxis("Vertical"));
}
else
{
motor = 0;
steer = 0;
brake = 0;
handbrake = 0;
}
//if car is on ground calculate handling, otherwise just rev the engine
if(onGround)
HandlePhysics();
else
CalcEngine();
//wheel GFX
UpdateWheels();
//engine sounds
audio.pitch=0.5+0.2*motor+0.8*engineRPM/maxRPM;
audio.volume=0.5+0.8*motor+0.2*engineRPM/maxRPM;
}
//Called by DamageReceiver if boat destroyed
function Detonate()
{
//destroy wheels
for( w in wheels )
w.coll.gameObject.active=false; //no more car physics
enabled=false;
}
