1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PlayCanvas コンポーネント操作のスクリプト【随時更新】

Last updated at Posted at 2022-06-30

コンポーネント一覧

  • anim
  • Audio Listener
  • Button
  • Camera
  • Collision
  • Element
  • Layout Child
  • Layout Group
  • Light
  • Particle System
  • Render
  • Rigid Body
  • Screen
  • Script
  • ScrollBar
  • Scroll View
  • Sound
  • Sprite

また、こちらの記事の元となっているシーンが入っているプロジェクトはこちらです。
https://playcanvas.com/editor/project/951440

この記事で利用している3Dモデルについてはサンディーちゃんを利用しております。

3D

Render

https://playcanv.as/b/3pyfEpUp/

Renderコンポーネントはrenderとしてアクセスできます。

https://developer.playcanvas.com/en/api/pc.RenderComponent.html

const render = this.entity.render;

表示 (show)

スクリーンショット 2022-06-29 18.19.09.png

render.show();

非表示 (hide)

スクリーンショット 2022-06-29 18.19.12.png

render.hide();

Collision

スクリーンショット 2022-06-30 12.11.11.png

https://playcanv.as/p/74yNM60T/

Colliisonはcollisionとしてアクセスできます。

https://developer.playcanvas.com/en/api/pc.CollisionComponent.html

// https://developer.playcanvas.com/en/api/pc.CollisionComponent.html
const collision = this.entity.collision;
  • collisionstart
// Collisionを持ったコンポーネント同士がぶつかった場合
collision.on("collisionstart", () => {}, this);
  • contact
collision.on("contact", () => {}, this);
  • collisionend
// Collisionを持ったコンポーネント同士が離れた場合
collision.on("collisionend", () => {}, this);

Rigid Body

スクリーンショット 2022-06-30 12.12.06.png

Rigid Bodyはrigidbodyとしてアクセスできます。

const rigidbody = this.entity.rigidbody;

https://playcanv.as/b/JRJUVBCH/

https://developer.playcanvas.com/en/api/pc.RigidBodyComponent.html

  • applyForce
rigidbody.applyForce(0, 10, 0);
  • applyImpluse
const impulse = new pc.Vec3(0, 5, 0);
rigidbody.applyImpulse(impulse);
  • applytorque
const torque = new pc.Vec3(0, 5, 0);
rigidbody.applyTorque(torque);
  • applyTorqueImpluse
const torque = new pc.Vec3(0, 5, 0);
rigidbody.applyTorqueImpulse(torque);
  • teleport
rigidbody.teleport(0, 5, 0);

Animコンポーネント

スクリーンショット 2022-06-29 17.23.14.png

https://playcanv.as/b/VLJCwlMd

animコンポーネントはanimとしてアクセスできます。

またエディタで設定をしたBaseレイヤーについてはbaseLayerとしてアクセスができます。

const anim = this.entity.anim;
const baseLayer = anim.baseLayer;

https://developer.playcanvas.com/en/api/pc.AnimComponent.html

トリガーの値を発火(setTrigger)

anim.setTrigger("jump");

レイヤー

ステートの移動 (transition)

baseLayer.transition("Initial State");

再生 (play)

anim.baseLayer.play();

停止 (pause)

anim.baseLayer.pause();

エフェクト

Particle System

スクリーンショット 2022-06-29 17.44.13.png

https://playcanv.as/b/ITaTubPM

ParticleSystemはparticlesystemとしてアクセスできます。

https://developer.playcanvas.com/en/api/pc.ParticleSystemComponent.html

const particlesystem = this.entity.particlesystem;

再生 (play)

particlesystem.play();

停止 (stop)

particlesystem.stop();

一時停止 (pause)

particlesystem.pause();

再開(unpause)

particlesystem.unpause();

リセット(reset)

particlesystem.reset();

サウンド

Sound

スクリーンショット 2022-06-30 12.20.49.png

https://playcanv.as/b/dkXoOKZZ/

const sound = this.entity.sound;

https://developer.playcanvas.com/en/api/pc.SoundComponent.html

  • 再生 (play)

const slotName = "SE";
sound.play(slotName);
  • 停止 (stop)

sound.stop();
  • 一時停止 (pause)

sound.pause();
  • 再開 (resume)

const slotName = "SE";
sound.resume(slotName);

2D

スクリーンショット 2022-06-30 12.16.13.png

https://playcanv.as/b/kVJuoZpx/

Elementはelementとしてアクセスできます。

const element = this.entity.element;

https://developer.playcanvas.com/en/api/pc.ParticleSystemComponent.html

Element - エレメントコンポーネント

  • クリック / マウスダウン / マウスアップ / ホバー
    • click
    • mousedown
    • mouseup
    • mouseenter
const onClick = () => alert("click");
this.clickElement.element.on("click", onClick, this);

// onMouseDown
const onMouseDown = () => alert("mousedown");
this.mouseUpElement.element.on("mousedown", onMouseDown, this);

// onMouseUp
const onMouseUp = () => alert("mouseup");
this.mouseDownElement.element.on("mouseup", onMouseUp, this);

// onMouseEnter
const onMouseEnter = () => alert("mouseenter");
this.mouseenterElement.element.on("mouseenter", onMouseEnter, this);
  • タッチ / タッチ終了(モバイル)
    • onTouchStart
    • onTouchEnd
// モバイル判定
if(pc.platform.mobile){
	const onTouchStart = () => alert("onTouchStart");
	this.entity.element.on(pc.EVENT_TOUCHSTART, onTouchStart , this)

	const onTouchEnd = () => alert("onTouchEnd");
	this.entity.element.on(pc.EVENT_TOUCHEND, onTouchEnd , this)
}

https://developer.playcanvas.com/en/api/pc.ElementComponent.html

Audio Listener

https://developer.playcanvas.com/en/api/pc.AudioListenerComponent.html

Button

https://developer.playcanvas.com/en/api/pc.ButtonComponent.html

Sprite

https://developer.playcanvas.com/en/api/pc.SpriteComponent.html

Camera

https://developer.playcanvas.com/en/api/pc.CameraComponent.html

Light

https://developer.playcanvas.com/en/api/pc.LightComponent.html

Screen

https://developer.playcanvas.com/en/api/pc.ScreenComponent.html

Scrollbar

https://developer.playcanvas.com/en/api/pc.ScrollbarComponent.html

Scroll View

https://developer.playcanvas.com/en/api/pc.ScrollbarComponent.html

Script

https://developer.playcanvas.com/en/api/pc.ScriptComponent.html

Layout Child

https://developer.playcanvas.com/en/api/pc.LayoutChildComponent.html

Layout Group

https://developer.playcanvas.com/en/api/pc.LayoutGroupComponent.html

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?