- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个圆形和内部和外部的三角形。我正在检查我的角色是否不在接触三角形的圆外的圆内,反之亦然。
即使我的角色脱离了我的圈子,这种情况仍然会发生。事实上,如果我在我的圆圈内并且三角形在我的圆圈外,那么我的角色不应该接触它们。我该如何解决这个问题?
有人有想法吗?
我的代码:
func AddCharacter() {
BooCharacter.size = CGSize(width: 30, height: 30)
BooCharacter.anchorPoint.y = 0
BooCharacter.zRotation = CGFloat(-M_PI_2)
//BooCharacter.position.y += circleRadius
BooCharacter.position = CGPoint(x:0.0, y:circleRadius)
BooCharacter.physicsBody = SKPhysicsBody(texture:BooCharacterSKT, size: CGSize(width: 30, height: 30))
BooCharacter.physicsBody = SKPhysicsBody(circleOfRadius: 15);
BooCharacter.physicsBody?.categoryBitMask = heroCategory
BooCharacter.physicsBody?.contactTestBitMask = triangleCategory
BooCharacter.physicsBody?.collisionBitMask = triangleCategory;
}
func AddCircle() {
Circle = SKShapeNode(circleOfRadius: circleRadius)
Circle.position = CGPoint(x: self.size.width/2, y: self.size.height/2)
Circle.strokeColor = UIColor.whiteColor()
self.addChild(Circle)
Circle.addChild(BooCharacter)
self.AddTriangleToCircle(Circle, Location: CGFloat(random(1...90)), Inside: true)
self.AddTriangleToCircle(Circle, Location: CGFloat(random(90...280)), Inside: false)
self.AddTriangleToCircle(Circle, Location: CGFloat(random(280...360)), Inside: false)
//self.AddTriangleToCircle(Circle, Location: 90)
//self.AddTriangleToCircle(Circle, Location: 180)
//self.AddTriangleToCircle(Circle, Location: 240)
//self.AddTriangleToCircle(Circle, Location: 300)
}
func AddPointsLable() {
pointsLabel = PointsLabel(num: 0)
pointsLabel.position = CGPoint(x: self.size.width/2, y: self.size.height/2 - 35)
pointsLabel.name = "pointsLabel"
addChild(pointsLabel)
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
BooCharacter.zRotation += CGFloat(M_PI)
//for touch in touches {
//let location = touch.locationInNode(self)
let TapLable = childNodeWithName("tap")
TapLable?.removeFromParent()
//}
}
override func update(currentTime: NSTimeInterval) {
angleRelatedToCircle -= rotationSpeed
//BooCharacter.zRotation -= rotationSpeed
let newLocation = CGPointMake(circleRadius * cos(angleRelatedToCircle), circleRadius * sin(angleRelatedToCircle));
// BooCharacter.position.x = circleRadius * cos(angleRelatedToCircle)
// BooCharacter.position.y = circleRadius * sin(angleRelatedToCircle)
BooCharacter.runAction(SKAction.rotateByAngle(-rotationSpeed, duration: 0));
BooCharacter.runAction(SKAction.moveTo(newLocation, duration: 0));
//SKAction.moveTo(CGP, duration: <#T##NSTimeInterval#>)
//NSLog("x = %f, y = %f, r = %f",BooCharacter.position.x,BooCharacter.position.y,BooCharacter.zRotation);
}
func AddTriangleToCircle(Circle: SKShapeNode, Location: CGFloat, Inside: Bool) {
let Triangle: SKSpriteNode = SKSpriteNode(imageNamed: "Triangle")
Triangle.size = CGSize(width: 30, height: 30)
Triangle.anchorPoint.y = 0
if Inside == true {
// Inside Triangle
Triangle.zRotation = CGFloat(M_PI_2)
} else {
// Outside Triangle
Triangle.zRotation = CGFloat(-M_PI_2)
}
Triangle.position = CGPoint(x:0.0, y:circleRadius)
let rotationSpeed1 = rotationSpeed + Location;
var angleRelatedToCircle1 = angleRelatedToCircle;
angleRelatedToCircle1 -= rotationSpeed1
Triangle.zRotation -= rotationSpeed1
Triangle.position.x = circleRadius * cos(angleRelatedToCircle1)
Triangle.position.y = circleRadius * sin(angleRelatedToCircle1)
//Triangle.name = "Triangle";
Triangle.physicsBody = SKPhysicsBody(texture:TriangelSKT, size: CGSize(width: 30, height: 30))
//TODO: Make this a polygon body
Triangle.physicsBody?.categoryBitMask = triangleCategory
Triangle.physicsBody?.contactTestBitMask = heroCategory
Triangle.physicsBody?.collisionBitMask = heroCategory
Circle.addChild(Triangle);
}
func didBeginContact(contact: SKPhysicsContact) {
// ---------------------------------------------
// Hero Hit Triangle
// ---------------------------------------------
if (contact.bodyA.categoryBitMask == triangleCategory) {
// Play Sound Effect
// Remove Triangle
//contact.bodyA.node?.removeFromParent();
// Update Score
NSLog("Hero hit Triangle");
}
}
func random(range: Range<Int> ) -> Int
{
var offset = 0
if range.startIndex < 0 // allow negative ranges
{
offset = abs(range.startIndex)
}
let mini = UInt32(range.startIndex + offset)
let maxi = UInt32(range.endIndex + offset)
return Int(mini + arc4random_uniform(maxi - mini)) - offset
}
}
最佳答案
您可能想要像这样设置角色的物理体:
BooCharacter.physicsBody = SKPhysicsBody(circleOfRadius: 15);
因为目前,字符大小是一个30x30的矩形,它的主体是一个直径为60(d=2r)的圆。你需要一个直径为 30 的物体。
此外,您正在更改角色 anchor ,但请记住物理 body 不受该操作的影响。它始终以节点的位置为中心...阅读更多内容 example .
关于三角节点。目前它有一个矩形的物理体,即使它是三角形。不确定你是否想要那样,但这可能会导致你遇到的问题。您有几个选项可以解决这个问题:
手动创建物理体,就像您的 previous questions 中指出的那样,或者
Create a physics body from a texture .请记住,这可能是性能密集型的,但它可能适合您的游戏,因为场景中没有很多物体。
关于ios - 如何在两个 SpriteKit 对象之间创建分隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34304214/
我需要修复 getLineNumberFor 方法,以便如果 lastName 的第一个字符位于 A 和 M 之间,则返回 1;如果它位于 N 和 Z 之间,则返回 2。 在我看来听起来很简单,但我不
您好,感谢您的帮助!我有这个: 0 我必须在每次点击后增加“pinli
Javascript 中是否有一种方法可以在不使用 if 语句的情况下通过 switch case 结构将一个整数与另一个整数进行比较? 例如。 switch(integer) { case
我有一列是“日期”类型的。如何在自定义选项中使用“之间”选项? 最佳答案 请注意,您有2个盒子。 between(在SQL中)包含所有内容,因此将框1设置为:DATE >= startdate,将框2
我有一个表,其中包含年、月和一些数字列 Year Month Total 2011 10 100 2011 11 150 2011 12 100 20
这个问题已经有答案了: Extract a substring between double quotes with regular expression in Java (2 个回答) how to
我有一个带有类别的边栏。正如你在这里看到的:http://kees.een-site-bouwen.nl/ url 中类别的 ID。带有 uri 段(3)当您单击其中一个类别时,例如网页设计。显示了一
这个问题在这里已经有了答案: My regex is matching too much. How do I make it stop? [duplicate] (5 个答案) 关闭 4 年前。 我
我很不会写正则表达式。 我正在尝试获取括号“()”之间的值。像下面这样的东西...... $a = "POLYGON((1 1,2 2,3 3,1 1))"; preg_match_all("/\((
我必须添加一个叠加层 (ImageView),以便它稍微移动到包含布局的左边界的左侧。 执行此操作的最佳方法是什么? 尝试了一些简单的方法,比如将 ImageView 放在布局中并使用负边距 andr
Rx 中是否有一些扩展方法来完成下面的场景? 我有一个开始泵送的值(绿色圆圈)和其他停止泵送的值(簧片圆圈),蓝色圆圈应该是预期值,我不希望这个命令被取消并重新创建(即“TakeUntil”和“Ski
我有一个看起来像这样的数据框(Dataframe X): id number found 1 5225 NA 2 2222 NA 3 3121 NA 我有另一个看起来
所以,我正在尝试制作正则表达式,它将解析存储在对象中的所有全局函数声明,例如,像这样 const a = () => {} 我做了这样的事情: /(?:const|let|var)\s*([A-z0-
我正在尝试从 Intellivision 重新创建 Astro-Smash,我想让桶保持在两个 Angular 之间。我只是想不出在哪里以及如何让这个东西停留在两者之间。 我已经以各种方式交换了函数,
到处检查但找不到答案。 我有这个页面,我使用 INNER JOIN 将两个表连接在一起,获取它们的值并显示它们。我有这个表格,用来获取变量(例如开始日期、结束日期和卡号),这些变量将作为从表中调用值的
我陷入了两个不同的问题/错误之间,无法想出一个合适的解决方案。任何帮助将不胜感激 上下文、FFI 和调用大量 C 函数,并将 C 类型包装在 rust 结构中。 第一个问题是ICE: this pat
我在 MySQL 中有一个用户列表,在订阅时,时间戳是使用 CURRENT_TIMESTAMP 在数据库中设置的。 现在我想从此表中选择订阅日期介于第 X 天和第 Y 天之间的表我尝试了几个查询,但不
我的输入是开始日期和结束日期。我想检查它是在 12 月 1 日到 3 月 31 日之间。(年份可以更改,并且只有在此期间内或之外的日期)。 到目前为止,我还没有找到任何关于 Joda-time 的解决
我正在努力了解线程与 CPU 使用率的关系。有很多关于线程与多处理的讨论(一个很好的概述是 this answer )所以我决定通过在运行 Windows 10、Python 3.4 的 8 CPU
我正在尝试编写 PHP 代码来循环遍历数组以创建 HTML 表格。我一直在尝试做类似的事情: fetchAll(PDO::FETCH_ASSOC); ?>
我是一名优秀的程序员,十分优秀!