問題
- 斜めに配置したコライダーをプレイヤーキャラに登らせる(左右移動させる)ようとすると重力に邪魔され押し返される
(プレイヤーキャラにはBoxCollider2D,RigidBody2Dコンポーネントを使用中)
期待する結果
-斜面オブジェクトが配置されている部分へ左右に移動させようとしても
重力の影響を受けずに登れること
(⊿ ←この様なオブジェクトに対してスムーズに移動できること)
試したこと
-検索で出てきたサイトを閲覧(しかし3D向けだった&説明が理解できなかった)
コード
現在の移動部分スクリプト
csharp
1 private void Key_A() 2 { 3 if (GameDataScr.Instance.flag[6] == 0) 4 { 5 if (animator.GetBool("isIdle") && 6 (GameDataScr.Instance.flag[8] == 0) && 7 (GameDataScr.Instance.flag[11] == 0)) 8 { 9 //移動 10 //はやさ * バフ値/100 11 //バフ補正処理 12 int sp = speed; 13 switch (GameDataScr.Instance.SpeedbuffFlag) 14 { 15 case 0: 16 break; 17 case 1: 18 sp = speed + speed * GameDataScr.Instance.SpeedValue / 100; 19 break; 20 case -1: 21 sp = speed - speed * GameDataScr.Instance.SpeedValue / 100; 22 break; 23 default: 24 break; 25 } 26 //マイナス値回避 27 if (sp < 0) 28 { 29 sp = 0; 30 } 31 //position変更処理 32 transform.position += new Vector3(-sp, 0, 0) * Time.deltaTime; 33 transform.localScale = new Vector3(Mathf.Abs(player_obj.transform.localScale.x), 34 player_obj.transform.localScale.y, player_obj.transform.localScale.z); 35 } 36 } 37 else 38 { 39 if ((GameDataScr.Instance.flag[8] == 1) || (GameDataScr.Instance.flag[11] == 1)) { return; } 40 //方向のみ移動 41 if (InputManager.GetRawAnalog("左移動") > 0.2f) 42 { 43 moveFlag = false; 44 //transform.position += new Vector3(-speed, 0, 0) * Time.deltaTime; 45 transform.localScale = new Vector3(Mathf.Abs(player_obj.transform.localScale.x), 46 player_obj.transform.localScale.y, player_obj.transform.localScale.z); 47 } 48 } 49 }
使用ソフト
Unity2018.4.12f1 Personal
VisualStudio Community 2019
あなたの回答
tips
プレビュー