Unity3D 學(xué)習(xí)筆記(一) 創(chuàng)建3d人物并讓其動(dòng)起來(lái)

Unity3D 學(xué)習(xí)筆記 創(chuàng)建3d人物并讓其動(dòng)起來(lái)

2020年2月9日

17:03

學(xué)習(xí)內(nèi)容:b站傅老師的U3D黑魂復(fù)刻課程

# 創(chuàng)建地板,添加地板磚材質(zhì)

調(diào)整大小,調(diào)整貼圖

# 創(chuàng)建一個(gè)膠囊,并添加角色模型

取消膠囊模型的渲染,調(diào)整collider,添加rigidbody

# 創(chuàng)建輸入控制腳本

創(chuàng)建playerinput添加給Playerhandle(空膠囊)

定義輸入按鍵

[Header("-------------keys--------------")]

public string keyUp = "w";

public string keyDown = "s";

public string keyLeft = "a";

public string keyRight = "d";

定義信號(hào)

[Header("--------------signals----------------")]

[SerializeField]

private float Dup;

[SerializeField]

private float Dright;

[SerializeField]

private float velocityDup;

[SerializeField]

private float velocityDright;

private float targetUp;

private float targetRight;

在update中計(jì)算

void Update()

{

targetUp = (Input.GetKey(keyUp)?1.0f:0.0f) - (Input.GetKey(keyDown)?1.0f:0.0f);//是否向上

targetRight = (Input.GetKey(keyRight)?1.0f:0.0f) - (Input.GetKey(keyLeft)?1.0f:0.0f);//是否向右

Dup = Mathf.SmoothDamp(Dup,targetUp,ref velocityDup,0.1f);

Dright = Mathf.SmoothDamp(Dup,targetRight,ref velocityDright,0.1f);

}

驗(yàn)證按下按鍵時(shí),信號(hào)可以正確變化。

但是當(dāng)同時(shí)按下w和d或者是其他斜向運(yùn)動(dòng),速度最大值可以達(dá)到單一方向運(yùn)動(dòng)的根號(hào)2倍,需要將方塊映射到圓中。

因此添加一個(gè)新的映射方法

private Vector2 SquareToCircle(Vector2 input)

{

Vector2 res= Vector2.zero;

res.x = input.x*Mathf.Sqrt(1-(input.y *input.y) /2);

res.y = input.y*Mathf.Sqrt(1-(input.x *input.x) /2);

return res;

}

添加新變量

public float Dmag;

public Vector3 Dvec;

在update中進(jìn)行計(jì)算

Vector2 tempDAxis = SquareToCircle(new Vector2(Dright,Dup));

Dmag = Mathf.Sqrt(tempDAxis.x * tempDAxis.x +tempDAxis.y * tempDAxis.y);

Dvec = tempDAxis.x * transform.right + tempDAxis.y * transform.forward;

可得正確效果

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容