襄陽(yáng)做網(wǎng)站 優(yōu)幫云seo軟件優(yōu)化工具軟件
目錄
- 見(jiàn)縫插針
- UI腳本
- 針腳本
- 球腳本
- 心得_旋轉(zhuǎn)
- 心得_更改父節(jié)點(diǎn)
- 心得_緩動(dòng)動(dòng)畫(huà)
- 成品展示圖
見(jiàn)縫插針
本人只是看了老師的大綱,中途不明白不會(huì)的時(shí)候再去看的視頻
所以代碼可能與老師代碼有出入
SIKI_學(xué)院_點(diǎn)擊跳轉(zhuǎn)
UI腳本
import { _decorator, Camera, color, Component, director, instantiate, Label, math, Node, Prefab, tween } from 'cc';
const { ccclass, property } = _decorator;@ccclass('ts_ui')
export class ts_ui extends Component {static inthis : ts_uistatic getinthis() : ts_ui {return this.inthis}@property(Prefab) pin : Prefab = null@property(Node) cam : Node = nullpin_num : number = 0 // 是否生成pin@property(Label) ui_fen : Label = nullfen : number = 0@property(Camera) camera : Camera = null@property(Node) but : Node = nullstart() {ts_ui.inthis = thisthis.schedule(this.on_rate,1)this.on_fen(0)}update(deltaTime: number) {}on_rate(){if (this.pin_num == 1){return} // 是否生成const p = instantiate(this.pin)this.cam.addChild(p)p.setPosition(0 , -640)this.pin_num = 1}on_fen(num : number){this.fen += numthis.ui_fen.string = this.fen.toString()}on_end(){this.but.active = truethis.on_anim()this.scheduleOnce(function(){director.pause()},1)}on_anim(){ // 結(jié)束緩動(dòng)動(dòng)畫(huà)函數(shù)let new_col = new math.Color()new_col.r = 60new_col.g = 5new_col.b = 5new_col.a = 255tween(this.camera).to(1 , {orthoHeight : 450 , clearColor : new_col}).start()}on_reset(){director.resume()director.loadScene(`s1`)}
}
針腳本
import { _decorator, Collider2D, Component, Contact2DType, Input, input, Node } from 'cc';
import { ts_circle } from './ts_circle';
import { ts_ui } from './ts_ui';
const { ccclass, property } = _decorator;@ccclass('ts_pin_s')
export class ts_pin_s extends Component {move_sp : number = -2 // -2剛生成時(shí) -1等待發(fā)射 0發(fā)射 1完成碰撞start() {const col = this.getComponent(Collider2D)if (col){col.on(Contact2DType.BEGIN_CONTACT,this.on_bc,this)} // 開(kāi)啟碰撞else {console.log(`針頭 開(kāi)啟碰撞異常`)}input.on(Input.EventType.TOUCH_END , this.on_te , this) // 開(kāi)啟觸摸}on_bc (me : Collider2D , oth : Collider2D){console.log(`針頭碰撞`,oth.name)if (oth.name == `Circle<CircleCollider2D>`){const pw = this.node.getWorldPosition()const rw = this.node.getWorldRotation()const cir = ts_circle.getinthis()this.node.setParent(cir.node) // 更新父節(jié)點(diǎn)this.node.setWorldPosition(pw)this.node.setWorldRotation(rw)this.move_sp = 1const ui = ts_ui.getinthis()ui.pin_num = 0ui.on_fen(1)}if (oth.name == `Pin<BoxCollider2D>`){ts_ui.getinthis().on_end()}}on_te(){if (this.move_sp == -1){this.move_sp = 0}}update(deltaTime: number) {this.move(deltaTime)}move(deltaTime: number){if (this.move_sp >= 1){return}const pos = this.node.getPosition()if (this.move_sp == -2){if (pos.y <= -500){this.node.setPosition(pos.x , pos.y + deltaTime * 500)} // 新生成速度else {this.move_sp = -1}}if (this.move_sp == -1){return}if (this.move_sp == 0){this.node.setPosition(pos.x , pos.y + deltaTime * 1000)} // 發(fā)射速度}
}
move 函數(shù)處于性能考慮
應(yīng)該在條件判斷成立時(shí) 返回的,不應(yīng)該多個(gè)IF輪流判定
球腳本
import { _decorator, CircleCollider2D, Collider2D, Component, Contact2DType, Input, Node } from 'cc';
const { ccclass, property } = _decorator;@ccclass('ts_circle')
export class ts_circle extends Component {static inthis : ts_circlestatic getinthis() : ts_circle {return this.inthis}start() {ts_circle.inthis = thisconst col = this.getComponent(Collider2D)if (col){col.on(Contact2DType.BEGIN_CONTACT,this.on_bc,this)}else {console.log(`球 開(kāi)啟碰撞異常`)}}on_bc(me : Node , oth : Node){console.log(`球 碰撞` , oth.name)}update(deltaTime: number) {this.node.angle += 2if (this.node.angle >= 360){this.node.angle = 0}}
}
心得_旋轉(zhuǎn)
項(xiàng)目設(shè)置 > 功能裁剪 > 2D物理系統(tǒng) > 內(nèi)置2D物理系統(tǒng)
在不改內(nèi)置的情況下
this.node.angle += 2 // 旋轉(zhuǎn)角度速度
球旋轉(zhuǎn)會(huì)卡住不動(dòng),取消剛體組件也可以使其正常旋轉(zhuǎn),但碰撞就會(huì)有點(diǎn)麻煩
心得_更改父節(jié)點(diǎn)
在變更父節(jié)點(diǎn)的時(shí)候,子節(jié)點(diǎn)的位置和角度會(huì)被重置
不想重置,就需要記錄之前的位置和角度,更換后再設(shè)置回來(lái)
if (oth.name == `Circle<CircleCollider2D>`){const pw = this.node.getWorldPosition()const rw = this.node.getWorldRotation()const cir = ts_circle.getinthis()this.node.setParent(cir.node) // 更新父節(jié)點(diǎn)this.node.setWorldPosition(pw)this.node.setWorldRotation(rw)this.move_sp = 1const ui = ts_ui.getinthis()ui.pin_num = 0ui.on_fen(1)}
心得_緩動(dòng)動(dòng)畫(huà)
還沒(méi)有仔細(xì)研究,看了老師的視頻,依葫蘆畫(huà)瓢
但看使用情況來(lái)看,以下是個(gè)人理解
tween 傳入緩動(dòng)組件
to 傳入 1緩動(dòng)執(zhí)行時(shí)間 2組件需要緩動(dòng)變更的屬性
start 開(kāi)始
on_anim(){ // 結(jié)束緩動(dòng)動(dòng)畫(huà)函數(shù)let new_col = new math.Color()new_col.r = 60new_col.g = 5new_col.b = 5new_col.a = 255tween(this.camera).to(1 , {orthoHeight : 450 , clearColor : new_col}).start()}
成品展示圖