国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

[游戲開發(fā)][Unity] TPS射擊游戲相機(jī)實(shí)現(xiàn)

這篇具有很好參考價值的文章主要介紹了[游戲開發(fā)][Unity] TPS射擊游戲相機(jī)實(shí)現(xiàn)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

TPS射擊游戲要實(shí)現(xiàn)的功能有:

  1. 滑屏控制
  2. 角色的橫向旋轉(zhuǎn)
  3. 相機(jī)的縱向旋轉(zhuǎn)(區(qū)別于橫向旋轉(zhuǎn))
  4. 相機(jī)貼墻拉近(不能穿墻)
  5. 相機(jī)觀察旋轉(zhuǎn)(角色不轉(zhuǎn)相機(jī)轉(zhuǎn)用于觀察四周)
  6. 開火按鈕和旋轉(zhuǎn)屏幕功能共存(邊開槍邊轉(zhuǎn)向瞄準(zhǔn))

射擊瞄準(zhǔn)技術(shù)方案二選一,很重要?。。?/h2>

市面上的TPS射擊游戲基本上有兩種實(shí)現(xiàn)射擊瞄準(zhǔn)

方案一:以槍口射擊方向為基準(zhǔn),相機(jī)跟著人做角度偏移

方案二:以相機(jī)的正方向為基準(zhǔn),使用IK組件讓角色的上半身強(qiáng)制瞄準(zhǔn)攝像機(jī)正前方N米的位置

方案1詳解,以槍口為基準(zhǔn),相機(jī)跟隨人動

方案2詳解

1、滑屏控制

當(dāng)按下屏幕時,獲取屏幕的橫軸、縱軸delta值

//滑動屏幕橫軸delta值
mousX = Input.GetAxis("Mouse X");
//滑動屏幕縱軸delta值
mousY = Input.GetAxis("Mouse Y");

題外話:企業(yè)項目的滑屏系統(tǒng)設(shè)計到多事件、多手指操作,代碼比較復(fù)雜,可以去看一些優(yōu)秀的操控源碼學(xué)習(xí)一下。

2、角色的橫向旋轉(zhuǎn)

這個一般有兩種做法,已知滑動屏幕橫軸和縱軸的delta值

mousX = Input.GetAxis("Mouse X");
transform.Rotate(Vector3.up, mousX * HorizonRotateSpeed);
rotateXValue += mousX * HorizonRotateSpeed;
Vector3 dir = new Vector3(0, rotateXValue, 0);
transform.rotation = Quaternion.Euler(dir);

3、相機(jī)的縱向旋轉(zhuǎn)

??????[游戲開發(fā)][Unity] TPS射擊游戲相機(jī)實(shí)現(xiàn),開發(fā)心得,unity,游戲

請注意,角色的橫向旋轉(zhuǎn)是Y軸自轉(zhuǎn),這個很好理解,而縱向旋轉(zhuǎn)是相機(jī)沿圖中藍(lán)線的向量旋轉(zhuǎn)

[游戲開發(fā)][Unity] TPS射擊游戲相機(jī)實(shí)現(xiàn),開發(fā)心得,unity,游戲

?當(dāng)滑動屏幕deltaY發(fā)生變化時,相機(jī)的坐標(biāo)沿藍(lán)色軸發(fā)生空間三維旋轉(zhuǎn),并且朝向始終是看向藍(lán)線,那具體看藍(lán)線上的哪個點(diǎn)?看第一張圖天藍(lán)色的那個箭頭線,需要給相機(jī)坐標(biāo)配置一個與角色的位置差值,比如右1米,高2米,后1.5米

相機(jī)繞肩膀軸(大概在肩膀位置,就這么叫吧)旋轉(zhuǎn)代碼如下:

//offsetWithPlayer相機(jī)相對角色的坐標(biāo)插值
//x代表左右、y代表上下、z代表前后

/相機(jī)旋轉(zhuǎn)軸:角色坐標(biāo)+軸高度+角色右方向
Vector3 RotateAxisHeight = new Vector3(0, 1.3f, 0);//1.3大概在肩膀位置
void OnUpdate()
{
    //先計算相機(jī)位置
    cameraPos = Player.transform.position + Player.right * (1 + offsetWithPlayer.x);
    cameraPos = cameraPos + Player.transform.up * (1 + offsetWithPlayer.y);
    cameraPos = cameraPos - Player.transform.forward * (1 + offsetWithPlayer.z);
    //更新相機(jī)位置
    followCamera.position = cameraPos;
    //相機(jī)位置繞肩膀軸旋轉(zhuǎn)rotateValue角度
    followCamera.RotateAround(Player.position + RotateAxisHeight, followTarget.right, rotateValue);
}

4、相機(jī)碰撞拉近

5、相機(jī)觀察旋轉(zhuǎn)

6、開火按鈕和旋轉(zhuǎn)屏幕功能共存

7、射擊方向方案選擇,以槍口為基準(zhǔn)還是以相機(jī)為基準(zhǔn)。

技術(shù)難點(diǎn):

槍與墻

由于是第三人稱射擊游戲,角色和相機(jī)之間有夾角,所以槍口點(diǎn)和準(zhǔn)星是有誤差的,下面是和平精英手游截圖,我用AK射擊柱子

[游戲開發(fā)][Unity] TPS射擊游戲相機(jī)實(shí)現(xiàn),開發(fā)心得,unity,游戲j文章來源地址http://www.zghlxwxcb.cn/news/detail-576998.html

到了這里,關(guān)于[游戲開發(fā)][Unity] TPS射擊游戲相機(jī)實(shí)現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包