私も初心者であまり詳しくないですが、一応アイディアを載せておきます。間違ってたらすみません。
この場合私が考えた方法では両方にスクリプトを書かないといけませんが、
プレイヤーのスクリプトに突き飛ばしのコマンドが実行されたかどうかを入れる変数(bool型)を追加します。
そして、突き飛ばす側(敵)のスクリプトが、プレイヤーの突き飛ばしコマンドがオンになっているか、またプレイヤーのコライダーに触れているかを調べ、両方の条件を満たしていればAddForceで敵を飛ばす方法です。
例コードを簡単に書いときます。
PlayerScript↓ プイレイヤー側のスクリプト プレイヤー側のタグにPlayerをつけてください
C#
1// 前文省略
2
3// 攻撃モーションが走ったかの真偽
4public bool Atack = false; // (publicでほかのスクリプトからの参照が可能)
5
6// 省略
7
8if (Input.GetKeyDown(KeyCode.H))
9{
10 this.rigid2D.AddForce(transform.right * this.jumpForce);
11 Atack = true;
12}else{
13 Atack = false;
14}
15
敵側のスクリプト
C#
1// 前文省略
2
3public GameObject Plyaer; // プレイヤーのゲームオブジェクトを参照する(Unityのインスペクターで指定が必要)
4private PlayerScript playerScript; // プレイヤーのスクリプトの状況を入れておく変数
5
6void Start{
7 playerScript = Player.GetComponent<PlayerScript>(); // プレイヤースクリプトの状態を取得
8}
9
10// 省略
11
12// OnCollisionStayで自分のコライダーがほかのコライダーと接しているかを調べられます
13void OnCollisionStay(Collider other){
14 // 接しているコライダーがプレイヤーのものか、またPlyaerScriptでAtackがオンになっているか。
15 if(playerScript.Atack == true && other.gameObject.tag == "Player"){
16 rigid2D.AddForce(Player.transform.forward); // プレイヤーが向いているほうへ飛ばす
17 }
18}
みにくいコードですみません。テストはしていないので動くかどうかはわかりませんので参考程度でお願いします。失礼しました。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/17 11:24