#applyImpulseについて
1 messages · Page 1 of 1 (latest)
import {world } from "@minecraft/server";
world.afterEvents.itemUse.subscribe(ev=>{
const{itemStack,source}=ev;
if(itemStack.typeId === "item:gun"){
const a = {
x: source.location.x,
y: source.location.y,
z: source.location.z,
};
const b = source.getViewDirection()
const entity = source.dimension.spawnEntity("item:tama",a)
entity.applyImpulse({x:<number>, y:<number>, z:<number>});
}
});
のように、オブジェクトのx,y,zに数字を入れてください
そのベクトルの方向に吹っ飛びます
プレイヤーの向きに飛ばしたいときは、
entity.applyImpulse(source.getViewDirection());
のようにしてください
力を上げたい場合はsource.getViewDirection()で取得したもののx,y,z全てに任意の数字を掛けてください
applyImpulse()のなかにgetViewをいれてあげればいいのか!!ありがとうございます!!
すみません!自分の知識不足で力を上げたいのですが、教えたくださったところのどこの部分に数字を書けばよいのかがわかりません、お手数なのですがどこの部分に入れればよいの教えてくださるとありがたいです!
二度もすみません。
メンションになってたらすみません!!以後気を付けます。
const scale = <number>;
const vector = source.getViewDirection();
entity.applyImpulse({x:vector.x * scale, y:vector.y * scale, z:vector.z * scale});
簡単に書くとこんな感じです
前にVector3のclassが削除されたのですが、そういうライブラリ(?)を配布されている方がいた気がするので検索してみてください
お聞きしたことの補足までありがとうございます!!大変助かりました!
すみません、似たようなことについてお聞きしたくここでご質問させていただきます。
今お教えしていただいたコードで試したのですが、下に飛ばすときに自分にあたってしまい消えてしまうため、いつでも自分の一つ前にスポーンさせたいのですが、どのようにすればよいのでしょうか。
スポーンさせるエンティティがprojectileであれば、そのエンティティのprojectleコンポーネントを取得し、その中のownerをプレイヤーにすれば、そのプレイヤーに弾は当たらなかった気がします
なるほど..ありがとうございます!!試してみます!!
すみませんscriptAPIが初心者過ぎてownerの設定の仕方がわかりませんでした..教えていただいてもよろしいでしょうか。何度もすみません。
最後の分にentity.ownerをつけてみたのですが、あっているのでしょうか?
entity.getComponent("projectile").owner = source;
でできます
ありがとうございます!!お教えいただいたもので勉強させていただきます!