左右反転はどのようにしているでしょうかね?
もしSpriteRenderer.flipXを使っていらっしゃるのでしたら、リファレンスの注釈や「[Q&A] unity2Dで、スプライトに合わせてColliderを反転させたい - Qiita」のmatsuyoroさんの回答のようにTransform.localScaleを試してみてはいかがでしょうか。
下記のようなコードで両者の挙動を観察してみたところ、
lang
1using UnityEngine;
2
3[RequireComponent(typeof(Animator))]
4public class TokoController : MonoBehaviour
5{
6 private static readonly int Punch = Animator.StringToHash("Punch");
7
8 [SerializeField] private FlipMode flipMode;
9
10 private Animator animator;
11 private new SpriteRenderer renderer;
12
13 private void Start()
14 {
15 this.animator = this.GetComponent<Animator>();
16 this.renderer = this.GetComponent<SpriteRenderer>();
17 }
18
19 private void Update()
20 {
21 var horizontalInput = Input.GetAxis("Horizontal");
22 if (Mathf.Abs(horizontalInput) > 0.0f)
23 {
24 switch (this.flipMode)
25 {
26 default:
27 // flipXによって左右を反転する場合
28 this.renderer.flipX = horizontalInput < 0.0f;
29 break;
30 case FlipMode.Scale:
31 // localScaleによって左右を反転する場合
32 var scale = this.transform.localScale;
33 scale.x = Mathf.Sign(horizontalInput);
34 this.transform.localScale = scale;
35 break;
36 }
37 }
38
39 // スペースキーで攻撃モーションへ遷移
40 if (Input.GetKeyDown(KeyCode.Space))
41 {
42 this.animator.SetTrigger(Punch);
43 }
44 }
45
46 private enum FlipMode
47 {
48 Flip,
49 Scale
50 }
51}
flipX
ではコライダーは反転せず...
localScale
ではコライダーが反転しました。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/30 14:49