Panda3D学习 (8):棋盘操作 碰撞检测

本文详细解析了使用Panda3D进行棋盘操作和碰撞检测的机制。介绍了disableMouse()方法的作用,以及CollisionHandlerQueue和CollisionRay在碰撞检测中的应用。通过设置不同的碰撞掩码区分from和into对象,并展示了棋盘布局和棋子移动的实现方式。最后,解释了整个碰撞检测流程,包括创建碰撞移动器、处理队列、定义碰撞节点和射线,以及如何在棋盘上进行碰撞检测。
摘要由CSDN通过智能技术生成

对这个例程的介绍有点深意,说是通过碰撞检测机制来操作鼠标控制棋盘,但是又说Plane类可以更快的实现。不知道这个Plane类是啥,但是先研究下这个例程本身好了。

self.disableMouse()先说一下这个方法在之前每个例程里都有提到,之前觉得没什么,今天把这个注释掉后发现问题很大。

它的作用不是禁用鼠标,而是禁用默认的鼠标控制camera的功能。 

1. 碰撞检测机制

from panda3d.core import CollisionHandlerQueue, CollisionRay

首先导入这两个包

Examples:

nodePath.setCollideMask(BitMask32(0x10))

This sets the into collide mask of nodePath, and all children of nodePath, to the value 0x10, regardless of the value each node had before.

nodePath.node().setFromCollideMask(BitMask32(0x10))

You can only set the from collide mask on a collision node, and you must set it directly on the node itself, not on the NodePath.

这两句的区别就在于一个是作为into对象,一个作为from对象。但看了例程之后 发现如果是into对象,是这样的语句:

self.squares[i].find("**/polygon").node().setIntoCollideMask(BitMask32.bit(1))

我觉得还是按例程来做即可了。

Thi

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值